以编程方式删除列的最佳做法是什么data.table
?
以下作品:
DT[, c("a", "b") := NULL]
但是当尝试使用存储列名称的变量来执行此操作时
cols.to.del <- c("a", "b") DT[, cols.to.del := NULL]
它没有严重失败,因为cols.to.del
没有在正确的环境中评估.
我们可以将它包装在括号内,然后将assign(:=
)分配给'NULL'(首选方式)
DT[, (cols.to.del) := NULL]
或者另一个选项(如果我们不想用括号括起来)将循环遍历循环中的'cols.to.del' for
并分配给NULL
for(j in seq_along(cols.to.del)){ DT[, cols.to.del[j] := NULL] }
或子集划分列,我们可以使用setdiff
随with=FALSE
.
DT[, setdiff(names(DT), cols.to.del), with=FALSE]