在阅读了有关R中子集列表的多个线程之后,我试图通过在Rstudio中四处闲逛来完全理解这一概念。我以为我理解了这个概念,直到遇到以下问题:
x <- list(list(list(1), 2), list(list(list(3), 4), 5), 6)
为什么x[[1]]
返回一个包含两个元素的列表,为什么x[[1]][[1]]
也返回一个列表?
答案 0 :(得分:1)
好吧,如果您只是这样写列表的定义-
x <- list(
list(
list(1),
2
),
list(
list(
list(3),
4
),
5
),
6
)
那么很容易看到x[[1]]
是
[[1]]
[[1]][[1]]
[1] 1
[[2]]
[1] 2
因此x[[1]]
包含两个元素-一个元素1的列表和向量2。x[[1]][[1]]
提取一个元素的列表。
答案 1 :(得分:1)
使用两个额外的空格查看代码,以使结构更清晰:
x <- list( list( list(1), 2), list(list(list(3), 4), 5), 6)
x的第一个元素是:list( list(1), 2)
#显然有两个元素的列表
该列表的第一个元素是:list(1)
#也是一个列表,但只有一个元素
答案 2 :(得分:0)
单括号进行子设置。双括号进行提取。
因此x[1]
是单个元素列表(x
简化为仅第一个元素)。
但是您做了x[[1]]
,它从x
中提取了第一个元素,这是一个由两个元素组成的列表,如其他人所述。
x[[1]][[1]]
从x
的第一个元素中提取第一个元素。