【问题标题】:R: Unselect matrix or data.frame columns by name [duplicate]R:按名称取消选择矩阵或data.frame列[重复]
【发布时间】:2012-02-03 12:11:59
【问题描述】:

可能重复:
Drop Columns R Data frame

假设一个矩阵有 3 个名为“A”、“B”、C”的列,我可以像这样取消选择“B”和“C”列:

df[, -c(2, 3)]

但是如果我想使用列名怎么办?我怎样才能 df[, -c("B", "C")]?

【问题讨论】:

  • 同意它是重复的。评论:-grep() 策略更通用。

标签: r matrix unselect


【解决方案1】:

匹配是你的朋友:

R> DF <- data.frame(A=1:2, B=2:3, C=3:4)
R> DF[, !(colnames(DF) %in% c("B","C")), drop=FALSE]
  A
1 1
2 2
R> 

关键是您需要布尔向量来进行索引(或者,数字索引)。所以任何创建布尔值的表达式都可以。

【讨论】:

  • 谢谢,虽然比 - 运算符复杂得多:(
  • 所以只需定义一个新的“-”(类似)运算符或函数。
  • 很好的建议,但我不清楚为什么它还没有定义。为什么只针对索引?毕竟我仍然可以使用列名来选择列:DF[, c("A", "B")]
猜你喜欢
  • 2014-12-29
  • 1970-01-01
  • 2012-04-06
  • 1970-01-01
  • 1970-01-01
  • 2018-07-14
  • 1970-01-01
  • 2017-12-22
  • 2017-09-20
相关资源
最近更新 更多