如何使用不同大小的列创建data.table

Ale*_*808 6 r data.table

我像这样创建data.table.

DT = data.table(A=c(1,2,3), B=c(1,2,3,4,5))
Run Code Online (Sandbox Code Playgroud)

但我得到了这个结果.

   A B
1: 1 1
2: 2 2
3: 3 3
4: 1 4
5: 2 5
Run Code Online (Sandbox Code Playgroud)

但我想得到这个.

   A B
1: 1 1
2: 2 2
3: 3 3
4: NA 4
5: NA 5
Run Code Online (Sandbox Code Playgroud)

如何创建不同大小的data.table?

akr*_*run 7

我们vectorlist('lst')中保持不等长度,然后循环遍历list元素,在末尾追加NA并转换为data.table.

lst <- list(A=c(1,2,3), B=c(1,2,3,4,5))
DT <- setDT(lapply(lst, `length<-`, max(lengths(lst))))[]
DT
#    A B
#1:  1 1
#2:  2 2
#3:  3 3
#4: NA 4
#5: NA 5
Run Code Online (Sandbox Code Playgroud)

  • 很好,很聪明,我从来没有想过*apply函数中的赋值:c (2认同)

Aru*_*esh 2

install.packages("qpcR")
library(qpcR)

df <- data.table(qpcR:::cbind.na(A=c(1,2,3), B=c(1,2,3,4,5)))
  A B
1  1 1
2  2 2
3  3 3
4 NA 4
5 NA 5
Run Code Online (Sandbox Code Playgroud)