删除每个列,但在data.table中删除其中一些列

sne*_*ter 4 r data.table

我不知道它是否已被问过,因为它似乎应该是一个常见的问题,但即使我尝试过,我仍然无法找到任何关于它的信息.对不起,那个案子.

鉴于dt <- data.table(col1 = c(1, 2, 3, 4), col2 = c("a", "b", "c", "d"), col3 = c(T, F, T, F)):

  • 您可以使用选择多个列 dt[, c("col1", "col2")]
  • 您可以使用选择除col1和col 2之外的每一列 dt[, -c("col1", "col2")]
  • 您可以使用删除列 dt[, "col1" := NULL]
  • 您可以使用删除多个列 dt[, c("col1", "col2") := NULL]
  • 您无法删除除col1之外的所有列 dt[, -"col1" := NULL]
  • 除了col1和col2之外,你都不能删除每一列 dt[, -c("col1", "col2") := NULL]

我很确定它必须以任何方式实现最后两个,但对我而言,目前还不可能.你能给我一些建议吗?我不是编程的新手,我知道一点R(不过我最强的),但我对data.table相当新.

感谢大家.

编辑:这个问题在以下链接中有一个答案,虽然主题没有解决这个问题所以如果你正在寻找这个特殊的疑问很难找到:

如何根据DF2中的重要变量对DF1中的列变量进行子集化?

akr*_*run 5

一种选择是setdiff指定不希望NULL从原始数据集中删除的列

dt[, setdiff(names(dt), "col1") := NULL][] 
Run Code Online (Sandbox Code Playgroud)