如何创建一个data.table,其中一行基于另一个data.table填充NA

sta*_*ant 2 r data.table

假设我有以下内容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
Run Code Online (Sandbox Code Playgroud)

现在说我想创建一个NAs我可以rbindlist使用DT的行.

第一次尝试(它不工作)

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
Run Code Online (Sandbox Code Playgroud)

这是行不通的,因为DT1:=NA调用时会进行转换(看起来像是plonking,因为如果你提供一个完整的列,当:=RHS类型将覆盖LHS ......)

那么问题是,如何提取一行a data.table并用NA填充它或创建一个data.table填充NA,其具有与另一个相同的列名和列类型

edd*_*ddi 5

有很多方法可以做到这一点,这里有一个:

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
Run Code Online (Sandbox Code Playgroud)