0

我有一个列表 l 它由以下元素组成:

> l
$quad_freqs
            [,1]        [,2]       [,3]       [,4]       [,5]      [,6]
sol 0.0002308597 0.004155474 0.00623358 0.02493248 0.02576132 0.0748037
          [,7]      [,8]       [,9]     [,10]     [,11]
sol 0.02493029 0.2318451 0.05612928 0.3593334 0.1916445

我知道 l 是一个列表,因为我输入了

> class(l)
[1] "list"

但是,我无法获取列表的元素。例如,

> l[[1]]
            [,1]        [,2]       [,3]       [,4]       [,5]      [,6]
sol 0.0002308597 0.004155474 0.00623358 0.02493248 0.02576132 0.0748037
          [,7]      [,8]       [,9]     [,10]     [,11]
sol 0.02493029 0.2318451 0.05612928 0.3593334 0.1916445
> l[[2]]
Error in l[[2]] : subscript out of bounds
> l[[0]]
Error in l[[0]] : attempt to select less than one element

我什至尝试了单括号运算符,但这也不起作用:

> l[2]
$<NA>
NULL

> l[0]
named list()

如何获取列表的元素?

这是我第一次使用 R,如果这是一个愚蠢的问题,很抱歉。

4

1 回答 1

3

从打印的方式来看l,它似乎是一个单元素列表,其第一个(唯一)元素是单行矩阵。像这样的东西:

l <- list(quadreps=matrix(rnorm(5), nrow=1))
l
# $quadreps
#           [,1]       [,2]      [,3]      [,4]      [,5]
# [1,] 0.5060329 -0.6333043 0.6637485 0.7293132 -1.330237

要访问矩阵的元素您需要先使用$或将其从列表中提取出来[[]],然后再对其进行子集化。例如,要提取quadrep的第三列中的元素,请使用以下任一方法:

l$quadreps[1,3]
# [1] -0.9604139

l[["quadreps"]][1,3]
# [1] -0.9604139

l[[1]][1,3]
# [1] -0.9604139
于 2013-09-24T18:45:45.623 回答