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

Fab*_*Gil 1 r vector

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

Mic*_*ico 7

怎么样:

x[names(x) == "a"]
# a a 
# 1 5 
Run Code Online (Sandbox Code Playgroud)

或者只获得最后一个:

x[tail(which(names(x) == "a"), 1L)]
# a 
# 5
Run Code Online (Sandbox Code Playgroud)

这比tail直接读取更容易阅读,但速度稍慢(参见参考资料getAnywhere("tail.default")):

x[(idx <- which(names(x) == "a"))[length(idx)]
# a 
# 5
Run Code Online (Sandbox Code Playgroud)