我有一个列表,其中的元素名称为“element”。
li <- list(element=list(id=1, name="x"), element=list(id=2, name="y"))
我希望获得元素的“名称”,其中“id”等于X.
首先我认为我可以用:
li[[which(li$element$id == 1)]]$name
但问题是li$element
指的是列表的第一个元素“元素”......
> li$element
$id
[1] 1
$name
[1] "x"
因此,如果我查找与列表中第一个元素的id不同的id,则返回“interger(0)”
> which(li$element$id == 2)
integer(0)
其实我喜欢这个:
for (element in li) {
if(element$id == 2) {
name <- element$name
}
}
但是我想知道是否有更好的方法可以做到这一点,或者我是否错过了基本列表概念(访问元素......)。
谢谢
答案 0 :(得分:1)
li[sapply(li, function(x) x["id"]==2)][[1]][["name"]]
#[1] "y"