具有多个条目的列表的长度是1?

时间:2018-02-04 08:56:28

标签: r

从下面的代码我们可以看到有一个list的二维数组:

> coldists[3,4]
[[1]]
     mean        sd 
0.5752512 0.4067640 
> class(coldists[3,4][1])
[1] "list"
> class(coldists[3,4][[1]])
[1] "numeric"

我的困惑是:为什么列表的长度报告为[1]而不是[2]

length(coldists[3,4])
[1] 1

毕竟该列表中似乎有2个条目(meansd)..

2 个答案:

答案 0 :(得分:3)

这是一个包含带有两个元素的向量的列表。

x <- list(c(mean = 0.5752512, sd = 0.4067640))
x
#> [[1]]
#>      mean        sd 
#> 0.5752512 0.4067640 

因为它只包含一个向量,所以它的长度为1。

length(x)
#> [1] 1

然而,当我们得到向量的长度时,它的长度为2.

length(x[[1]])
#> [1] 2

当我们使用单括号时,它会获得一个子列表而不是提取向量。该子列表仍然是一个长度列表,其中包含带有两个元素的向量。

length(x[1])
#> [1] 1

答案 1 :(得分:2)

此处,coldists[3,4]是包含一个元素的列表。在这个唯一的列表元素中,有一个长度为2的向量(mean,sd)。 如果要在列表中包含向量的长度,则需要将其指定为: length(coldists[3,4][[1]])