在阅读了几个关于R中的子集列表的线程后,我试图通过在Rstudio中闲逛来完全理解这个概念。我以为我理解了这个概念,直到我遇到了以下内容:
x <- list(list(list(1), 2), list(list(list(3), 4), 5), 6)
为什么x[[1]]
返回一个包含两个元素的列表,而x[[1]][[1]]
也返回一个列表?
好吧,如果你只写这样的列表定义-
x <- list(
list(
list(1),
2
),
list(
list(
list(3),
4
),
5
),
6
)
那么很容易看出CCD_ 3是
[[1]]
[[1]][[1]]
[1] 1
[[2]]
[1] 2
因此x[[1]]
包括两个元素——一个元素1的列表和向量2。CCD_ 5提取一个元素的列表。
查看带有两个额外空格的代码,以帮助使结构更加清晰:
x <- list( list( list(1), 2), list(list(list(3), 4), 5), 6)
x的第一个元素是:list( list(1), 2)
#显然是一个包含两个元素的列表
该列表的第一个元素是:list(1)
#也是一个列表,但有一个元素
单括号进行子集设置。双括号用于提取。
因此x[1]
是单个元素列表(x
简化为仅其第一个元素(。
但是您执行了x[[1]]
,它从x
中提取了第一个元素,正如其他人所解释的,它是一个两个元素的列表。
CCD_ 12从CCD_ 13的第一元素中提取第一元素。