从下面的代码我们可以看到有一个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个条目(mean
和sd
)..
答案 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]])