删除除data.table

时间:2018-06-27 16:53:52

标签: 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")]
  • 选择多个列
  • 您可以使用dt[, -c("col1", "col2")]
  • 选择除col1和col 2以外的所有列。
  • 您可以使用dt[, "col1" := NULL]
  • 删除列
  • 您可以使用dt[, c("col1", "col2") := NULL]
  • 删除多列
  • 您不能使用dt[, -"col1" := NULL]
  • 删除除col1之外的所有列。
  • 您无法使用dt[, -c("col1", "col2") := NULL]
  • 删除除col1和col2之外的所有列。

我很确定必须以任何方式实现最后两个目标,但是对我而言,目前尚不可能。你能给我一些建议吗?我对编程并不陌生,并且我对R有点儿了解(尽管不是我最强的),但是对data.table来说我还是很陌生。

谢谢大家。

编辑:该问题在以下链接中有一个答案,尽管该主题未解决该问题,因此如果您正在寻找此特定疑问,将很难找到它:

How do I subset column variables in DF1 based on the important variables I got in DF2?

1 个答案:

答案 0 :(得分:5)

一个选择是setdiff,将不需要的列分配给NULL从原始数据集中删除

dt[, setdiff(names(dt), "col1") := NULL][]