2014-02-09 109 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" 
相關問題