Data.table: рдХреНрдпрд╛ rbindlist(..., fill=TRUE) рд╕реВрдЪреА рдХреЙрд▓рдо рдореЗрдВ NA_logic_ рд▓реМрдЯрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 25 рдЬрдире░ 2020  ┬╖  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 рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдирдП рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реВрдЪреА рдХреЙрд▓рдо рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП?

non-atomic column question

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд▓рд╛рдкрддрд╛ рд╕реВрдЪреА рдХреЙрд▓рдо рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдиреЛрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдПрдХ рд╡рд╛рдХреНрдп рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:

рднрд░рдг рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐:

TRUE рд▓рд╛рдкрддрд╛ рдХреЙрд▓рдо рдХреЛ NA рд╕реЗ рднрд░рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ FALSE. рдЬрдм TRUE, use.names TRUE рдкрд░ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд:

TRUE рд▓рд╛рдкрддрд╛ рдХреЙрд▓рдо рдХреЛ NA рд╕реЗ рднрд░рддрд╛ рд╣реИ, рдпрд╛ NULL рдХреЗ рд╕рд╛рде рд▓рд╛рдкрддрд╛ рд╕реВрдЪреА рдХреЙрд▓рдо рдХреЛ рднрд░рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ FALSE. рдЬрдм TRUE, use.names TRUE рдкрд░ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред

рд╕рднреА 6 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЕрдЧрд░ рд╣рдо рдмрджрд▓рд╛рд╡ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдкреАрдЖрд░ рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде

рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореБрдЭреЗ рдареАрдХ рд▓рдЧрддрд╛ рд╣реИред

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

IMO рдпрд╣ NA рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐:

  • рдпрд╣ рдПрдХ рд▓рд╛рдкрддрд╛ рдХреНрд╖реЗрддреНрд░ (рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд) рд╕реЗ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рд╡реЗрдХреНрдЯрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ
  • рдпрд╣ рд▓рдВрдмрд╛рдИ рдХреЛ 0 рд▓рдВрдмрд╛рдИ рд╕реЗ рд▓рдВрдмрд╛рдИ 1 . рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИ

рдореИрдВ рдЬрдирд╡рд░реА рдХреА рдмрд╛рдд рдХреА рдУрд░ рдЭреБрдХ рд░рд╣рд╛ рд╣реВрдБред рдЦрд╛рд▓реА рддрддреНрд╡ рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧрд╛рдпрдм рд╣реЛрдиреЗ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕реВрдЪреА рдХрд╛ рддрд░реАрдХрд╛ рд╣реИ (рдЗрд╕ рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд╕реНрддреБ рдирд╣реАрдВ рд╣реИ)ред рд╣рдо рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╕реВрдЪреА рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рд╡реЗрдХреНрдЯрд░ рдерд╛, рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдХреБрдЫ рдЧрдгрдирд╛ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдерд╛ред рдРрд╕реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, 3 рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд╛рдЬреНрдпреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ: рд▓рдВрдмрд╛рдИ 0 рддрд╛рд░реНрдХрд┐рдХ, рд▓рдВрдмрд╛рдИ 1 NA рддрд╛рд░реНрдХрд┐рдХ, рдФрд░ рд▓рд╛рдкрддрд╛ рдЧрдгрдирд╛ред рдпрджрд┐ рд▓рдВрдмрд╛рдИ 1 NA рддрд╛рд░реНрдХрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рд╛рдкрддрд╛ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЙрди 2 рдХреЛ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ред

рдХреНрдпрд╛ рдкреНрд░рд┐рдВрдЯ рдкрджреНрдзрддрд┐ рдХреЛ рдмрджрд▓рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛? рдореБрджреНрд░рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп, NULL рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ? рдореБрджреНрд░рдг NA рдлрд┐рд░ рд╕реЗ рд▓рдВрдмрд╛рдИ 1 NA рддрд╛рд░реНрдХрд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ NULL рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛, рдЬреЛ рд░рд┐рдХреНрдд рд╕реВрдЪреА рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ R рдкреНрд░рд┐рдВрдЯ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдЧрд╛, рдФрд░ рдПрдХ рдФрд░ рджреГрд╢реНрдп рдЕрдиреБрд╕реНрдорд╛рд░рдХ рджреЗрдЧрд╛ рдХрд┐ рдпрд╣ рдПрдХ рд╕реВрдЪреА рдереА рд╕реНрддрдВрднред

рдЬрдирд╡рд░реА рд╕реЗ рднреА рд╕рд╣рдордд рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓рдВрдмрд╛рдИ 0 -> рд▓рдВрдмрд╛рдИ 1 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред

рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ length(x)>0 рдЦрд╛рд▓реА рд╕реВрдЪреА рдХреЙрд▓рдо рджреНрд╡рд╛рд░рд╛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫред

рд╣рдо рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд▓реЙрдЬрд┐рдХрд▓() рдбрд╛рд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдиреНрдпреВрд▓ рдкрд░ рд▓реЙрдЬрд┐рдХрд▓() рдХрд╛ рдХреЛрдИ рдлрд╛рдпрджрд╛ рд╣реИ?

рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд▓рд╛рдкрддрд╛ рд╕реВрдЪреА рдХреЙрд▓рдо рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдиреЛрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдПрдХ рд╡рд╛рдХреНрдп рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:

рднрд░рдг рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐:

TRUE рд▓рд╛рдкрддрд╛ рдХреЙрд▓рдо рдХреЛ NA рд╕реЗ рднрд░рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ FALSE. рдЬрдм TRUE, use.names TRUE рдкрд░ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд:

TRUE рд▓рд╛рдкрддрд╛ рдХреЙрд▓рдо рдХреЛ NA рд╕реЗ рднрд░рддрд╛ рд╣реИ, рдпрд╛ NULL рдХреЗ рд╕рд╛рде рд▓рд╛рдкрддрд╛ рд╕реВрдЪреА рдХреЙрд▓рдо рдХреЛ рднрд░рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ FALSE. рдЬрдм TRUE, use.names TRUE рдкрд░ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред

рдбреЙрдХреНрдЯрд░ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рд╕рд╛рде рд╣реА рдкреНрд░рд┐рдВрдЯ рд╡рд┐рдзрд┐ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд╛ рдореИрдВрдиреЗ рднреА рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛?

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

st-pasha picture st-pasha  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rafapereirabr picture rafapereirabr  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sengoku93 picture sengoku93  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jameslamb picture jameslamb  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sbudai picture sbudai  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ