Data.table: rbindlist (..., fill = TRUE)๊ฐ€ ๋ชฉ๋ก ์—ด์—์„œ NA_logical_์„ ๋ฐ˜ํ™˜ํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2020๋…„ 01์›” 25์ผ  ยท  6์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: Rdatatable/data.table

# 4196์—์„œ :

๋ชฉ๋ก ์—ด์„ ์ฑ„์šธ ๋•Œ rbindlist๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ์—ด ์œ ํ˜•์˜ ๋™์ž‘์—์„œ ๋ฒ—์–ด๋‚˜ NA ๋Œ€์‹  NULL ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

> A = data.table(c1=0, c2=list(1:3))
> B = data.table(c1=1)
> rbind(A,B,fill=TRUE)
      c1     c2
   <num> <list>
1:     0  1,2,3
2:     1   

์˜ˆ์ƒ :

> A = data.table(c1=0, c2=list(1:3))
> B = data.table(c1=1)
> rbind(A,B,fill=TRUE)
      c1     c2
   <num> <list>
1:     0  1,2,3
2:     1  NA   

๋‹ค๋ฅธ ์—ด ์œ ํ˜•์— ๋Œ€ํ•œ fill = TRUE์˜ ๋™์ž‘๊ณผ ์ผ์น˜ํ•˜๋„๋ก NA ๊ฐ’์œผ๋กœ ํ–‰์„ ์ฑ„์šฐ๋„๋ก ๋ชฉ๋ก ์—ด์˜์ด ๋™์ž‘์„ ๋ณ€๊ฒฝํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

non-atomic column question

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋ชฉ๋ก ์—ด์ด ๋ˆ„๋ฝ ๋œ ๊ฒฝ์šฐ ๋™์ž‘์„ ๊ธฐ๋กํ•˜๋Š” ๋ฌธ์žฅ์„ ๋ฌธ์„œ์— ์ถ”๊ฐ€ํ•˜๋ฉด ์–ด๋–จ๊นŒ์š”?

์ฑ„์šฐ๊ธฐ ์ธ์ˆ˜์˜ ํ˜„์žฌ ํ•ญ๋ชฉ :

TRUE๋Š” ๋ˆ„๋ฝ ๋œ ์—ด์„ NA๋กœ ์ฑ„ ์›๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ FALSE์ž…๋‹ˆ๋‹ค. TRUE์ด๋ฉด use.names๊ฐ€ TRUE๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

์ œ์•ˆ :

TRUE๋Š” ๋ˆ„๋ฝ ๋œ ์—ด์„ NA๋กœ ์ฑ„์šฐ๊ฑฐ๋‚˜ ๋ˆ„๋ฝ ๋œ ๋ชฉ๋ก ์—ด์˜ ๊ฒฝ์šฐ NULL์„ ์ฑ„ ์›๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ FALSE์ž…๋‹ˆ๋‹ค. TRUE์ด๋ฉด use.names๊ฐ€ TRUE๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  6 ๋Œ“๊ธ€

๋ณ€๊ฒฝํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์ œ๊ณต๋œ PR

ํ˜„์žฌ์˜ ํ–‰๋™์€ ๋‚˜์—๊ฒŒ ๊ดœ์ฐฎ์•„ ๋ณด์ธ๋‹ค.

> str(as.integer(NULL)[1L])
 int NA
> str(as.list(NULL)[1L])
List of 1
 $ : NULL

IMO๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ NA๊ฐ€ ์•„๋‹ˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

  • ๋ˆ„๋ฝ ๋œ ํ•„๋“œ (์ •์˜๋˜์ง€ ์•Š์Œ)์—์„œ ๋…ผ๋ฆฌ ๋ฒกํ„ฐ๋กœ ์œ ํ˜•์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธธ์ด๋ฅผ 0์—์„œ ๊ธธ์ด 1๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” Jan์˜ ์š”์ ์— ๊ธฐ๋Œ€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋นˆ ์š”์†Œ์˜ ํ˜„์žฌ ๋™์ž‘์€ ์‹ค์ œ๋กœ ๋ˆ„๋ฝ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ชฉ๋ก์˜ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค (๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐœ์ฒด๊ฐ€ ์—†์Œ). ๋ชฉ๋ก์˜ ๊ฐ ํ•ญ๋ชฉ์ด ๋…ผ๋ฆฌ ๋ฒกํ„ฐ์ด๊ณ  ๊ฐ ํ•ญ๋ชฉ์ด ๊ณ„์‚ฐ์˜ ๊ฒฐ๊ณผ ์ธ ์˜ˆ์ œ๋ฅผ ๊ตฌ์„ฑ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๊ธธ์ด 0 ๋…ผ๋ฆฌ์ , ๊ธธ์ด 1 NA ๋…ผ๋ฆฌ์ , ๊ณ„์‚ฐ ๋ˆ„๋ฝ์˜ ์„ธ ๊ฐ€์ง€ ์ƒํƒœ๋ฅผ ํ‘œ์‹œํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธธ์ด 1 NA ๋…ผ๋ฆฌ๊ฐ€ ๋ˆ„๋ฝ์— ์‚ฌ์šฉ ๋œ ๊ฒฝ์šฐ ํ•ด๋‹น 2๋ฅผ ๊ตฌ๋ณ„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ธ์‡„ ๋ฐฉ๋ฒ•์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๊นŒ? ์•„๋ฌด๊ฒƒ๋„ ์ธ์‡„๋˜์ง€ ์•Š๋Š” ๋Œ€์‹  NULL ์–ด๋–ป์Šต๋‹ˆ๊นŒ? NA ์ธ์‡„๋Š” ๋‹ค์‹œ ๊ธธ์ด 1 NA ๋…ผ๋ฆฌ์ ์„ ์˜๋ฏธ ํ•  ์ˆ˜์žˆ๋Š” ๋ฐ˜๋ฉด NULL ๋Š” ๊ธฐ๋ณธ R์ด ๋นˆ ๋ชฉ๋ก ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ์ธ์‡„ํ•˜๋Š” ๊ฒƒ๊ณผ ์ผ์น˜ํ•˜๋ฉฐ ์ด๊ฒƒ์ด ๋ชฉ๋ก์ด๋ผ๋Š” ์‹œ๊ฐ์  ์•Œ๋ฆผ์„ ์ถ”๊ฐ€๋กœ ์ œ๊ณตํ•˜๋Š” ๋ชจํ˜ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ธฐ๋‘ฅ.

๋˜ํ•œ w Jan, ํŠนํžˆ ๊ธธ์ด 0-> ๊ธธ์ด 1์— ๋Œ€ํ•ด ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

๋นˆ ๋ชฉ๋ก ์—ด๋กœ ํ–‰์„ ํ•„ํ„ฐ๋งํ•˜๊ธฐ ์œ„ํ•ด lengths (x)> 0์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€์‹ ์— logical ()์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, NULL๋ณด๋‹ค logical ()์˜ ์ด์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋ชฉ๋ก ์—ด์ด ๋ˆ„๋ฝ ๋œ ๊ฒฝ์šฐ ๋™์ž‘์„ ๊ธฐ๋กํ•˜๋Š” ๋ฌธ์žฅ์„ ๋ฌธ์„œ์— ์ถ”๊ฐ€ํ•˜๋ฉด ์–ด๋–จ๊นŒ์š”?

์ฑ„์šฐ๊ธฐ ์ธ์ˆ˜์˜ ํ˜„์žฌ ํ•ญ๋ชฉ :

TRUE๋Š” ๋ˆ„๋ฝ ๋œ ์—ด์„ NA๋กœ ์ฑ„ ์›๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ FALSE์ž…๋‹ˆ๋‹ค. TRUE์ด๋ฉด use.names๊ฐ€ TRUE๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

์ œ์•ˆ :

TRUE๋Š” ๋ˆ„๋ฝ ๋œ ์—ด์„ NA๋กœ ์ฑ„์šฐ๊ฑฐ๋‚˜ ๋ˆ„๋ฝ ๋œ ๋ชฉ๋ก ์—ด์˜ ๊ฒฝ์šฐ NULL์„ ์ฑ„ ์›๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ FALSE์ž…๋‹ˆ๋‹ค. TRUE์ด๋ฉด use.names๊ฐ€ TRUE๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

๋ฌธ์„œ ๋ณ€๊ฒฝ์ด ์ข‹์•„ ๋ณด์ž…๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ๋‚ด๊ฐ€ ์ œ์•ˆํ•œ ์ธ์‡„ ๋ฐฉ๋ฒ• ๋ณ€๊ฒฝ๋„?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰