【问题标题】:How to 'subset' a named vector in R?如何在 R 中对命名向量进行“子集化”?
【发布时间】:2013-12-27 04:17:12
【问题描述】:

假设我在 R 中有这个命名向量:

foo=vector()
foo['a']=1
foo['b']=2
foo['c']=3

如何最干净地制作另一个仅包含元素“a”和“c”的命名向量?

如果这是一个包含“名称”列和“值”列的数据框,我可以使用

subset(df, name %in% c('a', 'b'))

这很好,因为子集可以评估任何布尔表达式,所以它非常灵活。

【问题讨论】:

标签: r


【解决方案1】:

这个怎么样:

foo[c('a','b')]

【讨论】:

  • 有没有办法否定这种语法?看来foo[-1]可以写,foo[-"a"]不行。
  • foo[!(names(foo) %in% c('a','b'))]
【解决方案2】:

作为旁注,请避免在 R 中“增长”结构。您的示例也可以这样编写:

foo = c(a = 1, b = 2, c = 3)

要像安德烈的回答那样做子集:

foo[c('a','b')]

【讨论】:

  • 这应该是评论而不是答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-10
  • 1970-01-01
相关资源
最近更新 更多