访问列表中具有相同名称的元素

时间:2014-02-09 12:18:25

标签: r

我有一个列表,其中的元素名称为“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
    }
}

但是我想知道是否有更好的方法可以做到这一点,或者我是否错过了基本列表概念(访问元素......)。

谢谢

1 个答案:

答案 0 :(得分:1)

li[sapply(li, function(x) x["id"]==2)][[1]][["name"]]
#[1] "y"