我正在尝试将某些列设置为NA。例如:
DT2 <- data.table(Id = rep(c(1,2,3),each = 20),
x1 = rnorm(20),
x2 = rnorm(20),
x3 = c(NA,NA,rnorm(18)))
DT2[,2] <- NA # sets the second column NA
令人惊讶的是,DT2[,c(F,T,F,F)] <- NA
在这种情况下不起作用,需要使用which
。
但是,当您按索引将多列设置为NA
时,上面的大数据表似乎相当慢。我想知道是否有更好的方法,也许是使用set
?
谢谢你的任何提示!
答案 0 :(得分:0)
虽然可以使用列位置来更新值,但通常最好使用列名进行编码,以防止列顺序更改时出现问题。以下显示如何按名称
设置单个列或多个列的所有值library(data.table)
DT2[, x1 := NA]
DT2[, c("x1", "x3") := NA]
如果你想使用data.frame
语法(对于小数据集来说实际上更快)
DT2[, "x1"] <- NA
DT2[, c("x1", "x3")] <- NA
答案 1 :(得分:0)
正如弗兰克指出的那样,需要使用:=
来提高速度,例如以上例子:
DT[, (c(2,3)) := NA]