我经常需要从data.frame中删除列列表.
我经常这样做:
to.remove <- c("hp","drat","wt","qsec")
mtcars[,-which(names(mtcars) %in% to.remove)]
Run Code Online (Sandbox Code Playgroud)
哪个工作正常.
但我希望能够以更清洁的方式使用subset.但它似乎附加了data.frame,然后将列名称作为变量而不是字符串来访问.
例如,这是我希望能够做到的:
subset(mtcars,select=-to.remove)
Run Code Online (Sandbox Code Playgroud)
有没有办法强制subset在select语句中使用字符串向量?还是有另一个更好的选择吗?
jor*_*ran 26
我可能会这样做:
to.remove <- c("hp","drat","wt","qsec")
`%ni%` <- Negate(`%in%`)
subset(mtcars,select = names(mtcars) %ni% to.remove)
Run Code Online (Sandbox Code Playgroud)
(我%ni%经常使用它,所以我已将它内置到我的.Rprofile中.)
你当然可以使用select,但你必须传递名字,而不是字符.所以这将有效:
subset( mtcars, select = -c(hp, drat, wt, qsec) )
Run Code Online (Sandbox Code Playgroud)