【问题标题】:Remove every column but some of them in data.table [duplicate]删除每一列,但其中一些列在 data.table [重复]
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 2021-10-14
    • 2022-09-27
    • 2019-08-13
    • 2020-09-29
    • 1970-01-01
    相关资源
    最近更新 更多