当前位置:  开发笔记 > 编程语言 > 正文

data.table - 以编程方式删除列

如何解决《data.table-以编程方式删除列》经验,为你挑选了1个好方法。

以编程方式删除列的最佳做法是什么data.table

以下作品:

DT[, c("a", "b") := NULL]

但是当尝试使用存储列名称的变量来执行此操作时

cols.to.del <- c("a", "b")
DT[, cols.to.del := NULL]

它没有严重失败,因为cols.to.del没有在正确的环境中评估.



1> akrun..:

我们可以将它包装在括号内,然后将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]
}

或子集划分列,我们可以使用setdiffwith=FALSE.

DT[, setdiff(names(DT), cols.to.del), with=FALSE]


@paljenczy请注意,第三个版本不会从`DT`中删除列; 而且该命令的输出是_new_`data.table`,你必须_assign_(通过复制)到'DT`,这可能是低效的.
推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有