从列表列表中获取命名变量

时间:2014-01-18 03:47:46

标签: r

这可能是微不足道的但有人可以帮我这个吗? 我一直在使用apply来调用一个返回列表的函数 l <- apply(df, 1, manydo); manydo函数返回一个列表(“a”= a,“b”= b)

输出l似乎是列表的列表,因为当我键入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 ;(

谢谢!

1 个答案:

答案 0 :(得分: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本身的价值。