从data.table按名称删除除指定列以外的所有列

时间:2017-08-01 20:08:50

标签: r data.table

我有一些数据:

val.txt

我想保留一些列名称的向量:

library(data.table)
data(mtcars)
setDT(mtcars)

除了some_keep <- c('mpg','cyl') more_keep <- c('disp','hp') some_keep中指定的列之外,我想要删除每一列。

我知道我可以more_keep使用setdiff

names

但这似乎不太可读。我知道除了这些之外选择,我可以使用mtcars[, ( setdiff(names(mtcars),c(some_keep,more_keep)) ) := NULL] # this works

with=FALSE

但是这不起作用:

mtcars[,-c(some_keep,more_keep), with=FALSE] # returns the columns I want to drop

这些也没有:

mtcars[,(-c(some_keep,more_keep)):=NULL] # invalid argument to unary operator

是否有一个更简单的mtcars[,-c(some_keep,more_keep)] <- NULL # invalid argument to unary operator mtcars[,-c(some_keep,more_keep), with=FALSE] <- NULL # unused argument (with = FALSE) 表达式,不需要两次写表名?

请注意,seemingly duplicate question这个{{3}}实际上是在询问选择(不删除)所有指定内容,但如上所示。

0 个答案:

没有答案