我有向量x<-1:5
我命名了它的元素(错误地)names(x)<-rep(c(letters[1:4], "a"))
。如何按名称访问 last 元素?
x["a"]
仅返回名为"a"
的第一个元素。
答案 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等元素的向量。所有除了第一个。在这种情况下,你必须循环或其他东西。