【问题标题】:R referring to dataframe columns by label to delete them [duplicate]R按标签引用数据框列以删除它们[重复]
【发布时间】:2013-03-30 03:19:52
【问题描述】:

虽然我的搜索毫无结果,但我想这很容易——

给定

z=data.frame(X.39=rnorm(20),X.40=rnorm(20),X.51=rnorm(20))

子集操作

z[,c('X.39','X.51')]

有效。但是

z[,-c('X.39','X.51')]

给我

Error in -c("X.39", "X.51") : invalid argument to unary operator

为什么会这样?如何使用列名列表删除一组列?

编辑

我知道我可以随时使用

z[,!names(z) %in% c('X.39','X.51')]

但我正在寻找更懒惰的解决方案

EDIT2

大部分讨论都在评论部分,但为了保持良好的秩序而关闭它,其要点是不可能使用更懒惰的解决方案(按名称直接引用)。这似乎是设计的。

【问题讨论】:

标签: r dataframe subset


【解决方案1】:

您可以使用 setdiff 函数,但我不能说它是否是最优雅的解决方案:

z[, setdiff(names(z), c('X.39','X.51'))]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    • 2020-09-15
    • 2012-11-13
    • 2015-09-18
    • 1970-01-01
    相关资源
    最近更新 更多