2014-01-18 151 views
1

這可能是微不足道的,但有人可以幫助我嗎? 我一直在使用apply來調用返回一個列表的函數,例如 l <- apply(df, 1, manydo); manydo函數返回一個列表列表( 「A」= A, 「B」= b)的從列表中獲取命名變量

輸出升似乎是列表的列表,因爲當我輸入str(l)它返回

List of 5 
$ 1:List of 2 
    ..$ a: Named num [1:36] 3.29 3.25 3.36 3.26 3.34 ... 
    .. ..- attr(*, "names")= chr [1:36] "V1" "V2" "V3" "V4" ... 
    ..$ b: Named num [1:36] 0.659 0.65 0.672 0.652 0.669 ... 

我試圖訪問它很多方式,如

l[1][1] 
or l[1]['a'] 
unlist(l[1][1]['a']) 

但沒有任何工作。我想要的是能夠得到例如第一個元素和'a'變量? 此外,如果我只是調用該函數直接說:

l <- manydo(c(1:36)) # I can access this 
l['a'] # this works, so I'm confuse ;(

的感謝!

回答

2

[返回包含所選元素的列表。 [[返回一個元素(不包含在列表中),所以這就是你想在這裏使用的。

l <- list(list(a=1:10, b=10:22), list(), list(), list(), list()) 
str(l) 
## List of 5 
## $ :List of 2 
## ..$ a: int [1:10] 1 2 3 4 5 6 7 8 9 10 
## ..$ b: int [1:13] 10 11 12 13 14 15 16 17 18 19 ... 

...

我們檢索a

l[[1]][['a']] 
[1] 1 2 3 4 5 6 7 8 9 10 

l[[1]]是包含a列表。 l[[1]][['a']]a本身的值。

+0

這是完美的 - 感謝您的解釋 - 直到現在一直試圖這個字面上超過一個小時,沒有任何進展! – Ahdee