当某些名称重复时,在R中按名称访问向量元素

时间:2016-02-25 21:55:57

标签: r vector

我有向量x<-1:5我命名了它的元素(错误地)names(x)<-rep(c(letters[1:4], "a"))。如何按名称访问 last 元素? x["a"]仅返回名为"a"的第一个元素。

2 个答案:

答案 0 :(得分:7)

怎么样:

x[names(x) == "a"]
# a a 
# 1 5 

或者只获得最后一个:

x[tail(which(names(x) == "a"), 1L)]
# a 
# 5

这比直接获取tail所做的更容易阅读,但速度稍慢(参见getAnywhere("tail.default")):

x[(idx <- which(names(x) == "a"))[length(idx)]
# a 
# 5

答案 1 :(得分:1)

函数duplicated()将给出除第一个之外的布尔向量。在你的情况下,它将只是第二个“a”。因此,

x[duplicated(names(x))]

会给你第二个条目。如果向数据框添加更多“a”条目,则会得到2,3等元素的向量。所有除了第一个。在这种情况下,你必须循环或其他东西。