【发布时间】:2018-06-27 16:53:52
【问题描述】:
我不知道它是否已经被问过,因为它似乎应该是一个常见问题,但即使我已经尝试过,我也无法找到任何相关信息。在那种情况下很抱歉。
给定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]删除多个列 - 您不能使用
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?
【问题讨论】:
-
您可以使用
setdiff,即dt[, setdiff(names(dt), "col1") := NULL][] -
完美运行。非常感谢!
标签: r data.table