假设我有以下data.table
(但可以将其视为一个表,其中包含许多名称动态变化的列)
DT <- data.table(a=rep(1L,3),b=rep(1.32,3),d=rep("qwe",3))
DT
a b d
1: 1 1.32 qwe
2: 1 1.32 qwe
3: 1 1.32 qwe
现在假设我想用NAs
创建一行,然后用DT创建rbindlist
。
首次尝试(不起作用)
DT1 <- DT[1][,colnames(DT):=NA]
DT1
a b d
1: NA NA NA
rbindlist(list(DT1,DT))
a b d
1: NA NA NA
2: TRUE TRUE NA
3: TRUE TRUE NA
4: TRUE TRUE NA
这不起作用,因为DT1
在调用:=NA
时被强制转换(这似乎是一种叫做plonking的东西,因为如果你在:=
RHS类型将覆盖LHS时提供一个完整的列…)
那么,问题是,我如何提取data.table
的一行并用NA填充它,或者创建一个data.table
,用与另一个具有相同列名和列类型的NA填充
有很多方法可以做到这一点,这里有一种:
rbind(DT[NA], DT)
# a b d
#1: NA NA NA
#2: 1 1.32 qwe
#3: 1 1.32 qwe
#4: 1 1.32 qwe