2015-01-11 144 views
2

的名字得到元素我有一個嵌套列表,像這樣:R:從嵌套列表

smth <- list() 
smth$a <- list(a1=1, a2=2, a3=3) 
smth$b <- list(b1=4, b2=5, b3=6) 
smth$c <- "C" 

列表中的每個元素的名稱是獨一無二的。

我想從這樣的列表中僅僅通過名稱得到一個元素,而不知道它的位置。

例子:

getByName(smth, "c") = 「C」

getByName(smth, "b2") = 5

而且我真的不希望使用unlist因爲真正的名單有很多在它的重元素。

+1

檢查此鏈接的http://r.789695 .n4.nabble.com /如何獲取特定命名元素嵌套列表td3037430.html – akrun

+0

謝謝@akrun。該鏈接有一個類似的遞歸到我嘗試的那個(除了我沒有工作)。 –

回答

2

迄今爲止最好的解決辦法是:

rmatch <- function(x, name) { 
    pos <- match(name, names(x)) 
    if (!is.na(pos)) return(x[[pos]]) 
    for (el in x) { 
    if (class(el) == "list") { 
     out <- Recall(el, name) 
     if (!is.null(out)) return(out) 
    } 
    } 
} 

rmatch(smth, "a1") 
[1] 1 
rmatch(smth, "b3") 
[1] 6 

完全歸功於@akrun尋找它和mbedward張貼它here