2014-02-09 86 views
0

我有一个具有相同名称“元素”的元素的列表。访问列表中具有相同名称的元素

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" 

所以,如果我看˚F还是从我的列表中的第一个元素的ID不同的ID,它返回“整数(0)”

> which(li$element$id == 2) 
integer(0) 

其实我这样做:

for (element in li) { 
    if(element$id == 2) { 
     name <- element$name 
    } 
} 

但我不知道是否有一个更好的方式去做,或者如果我错过了基本的列表概念(对元素的访问......)。

谢谢

+0

为什么你要查找的名字时,所有的名称是相同的? –

+0

对不起,我的例子令人困惑,通过“找到名字”我的意思是元素的名称,它是:“li $ element $ name”。 –

回答

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