假设我有以下内容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,其具有与另一个相同的列名和列类型
有很多方法可以做到这一点,这里有一个:
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)