R:通过引用从 data.table 中删除列,但没有名称

R: Drop columns from data.table, by reference, without having the name

这是 几乎 this 的副本。我想从数据 table 中删除列,但我想高效地进行。我有一个要保留的列名称列表。链接问题的所有答案都意味着做类似于

的事情
data.table.new <- data.table.old[, my.list]

这会在某个关键点给我一个新对象,而旧对象仍在内存中。但是,我的 data.table.old 很大,因此我更喜欢按照建议通过参考来做到这一点 here

set(data.table.old, j = 'a', value = NULL)

但是,由于我有列的白名单,而不是黑名单,我需要遍历所有列名,检查它们是否在 my.list 中,然后应用 set() .有什么 cleaner/other 方法吗?

不确定是否可以在 data.frame 上执行 by reference 操作而不使它成为 data.table。
如果您考虑使用 data.table,下面的代码应该可以工作。

library(data.table)
setDT(data.frame.old)
dropcols <- names(data.frame.old)[!names(data.frame.old) %in% my.list]
data.frame.old[, c(dropcols) := NULL]