R中使用双方括号的子集列表

R中使用双方括号的子集列表,r,list,subset,R,List,Subset,在阅读了几个关于R中的子集列表的帖子之后,我试图通过在Rstudio中鬼混来完全理解这个概念。我以为我理解了这个概念,直到我遇到以下情况: x <- list(list(list(1), 2), list(list(list(3), 4), 5), 6) x好吧,如果你只是这样写列表的定义- x <- list( list( list(1), 2 ), list( list( list(3), 4 ), 5

在阅读了几个关于R中的子集列表的帖子之后,我试图通过在Rstudio中鬼混来完全理解这个概念。我以为我理解了这个概念,直到我遇到以下情况:

x <- list(list(list(1), 2), list(list(list(3), 4), 5), 6)

x好吧,如果你只是这样写列表的定义-

x <- list(
  list(
    list(1),
    2
  ),
  list(
    list(
      list(3),
      4
    ),
    5
  ),
  6
)

因此
x[[1]]
包含两个元素-一个元素1的列表和向量2
x[[1]][[1]]
提取一个元素的列表。

好吧,如果你只是这样写列表的定义-

x <- list(
  list(
    list(1),
    2
  ),
  list(
    list(
      list(3),
      4
    ),
    5
  ),
  6
)

因此
x[[1]]
包含两个元素-一个元素1的列表和向量2
x[[1]][[1]]
提取一个元素的列表。

单括号进行子集设置。双括号用于提取

因此
x[1]
是一个单元素列表(
x
减少为仅第一个元素)

但是你做了
x[[1]]
,它从
x
中提取了第一个元素,正如其他人所解释的,它是一个两个元素的列表


x[[1]][[1]]
x
的第一个元素中提取第一个元素

单括号进行子集设置。双括号用于提取

因此
x[1]
是一个单元素列表(
x
减少为仅第一个元素)

但是你做了
x[[1]]
,它从
x
中提取了第一个元素,正如其他人所解释的,它是一个两个元素的列表


x[[1]][[1]]
x
的第一个元素中提取第一个元素查看带有两个额外空格的代码,以帮助使结构更清晰:

x <- list(  list( list(1), 2), list(list(list(3), 4), 5), 6)

x查看带有两个额外空格的代码,以帮助使结构更加清晰:

x <- list(  list( list(1), 2), list(list(list(3), 4), 5), 6)

x您正在子集第一个列表元素,它也是一个嵌套列表。我不明白您期望的是什么
x[[1]]
返回一个包含两个元素的列表,因为在
x
的第一个插槽中存储了一个包含两个元素的列表。但每次嵌套列表的总深度都在减少。该列表在第一个插槽中存储了一个列表,因此
x[[1]][[1]]
返回一个列表。(您的命令以三个嵌套的
list()
调用开始)。你期望得到什么回报?或者您希望返回什么?您正在子集第一个列表元素,它也是一个嵌套列表。我不明白您期望的是什么
x[[1]]
返回一个包含两个元素的列表,因为在
x
的第一个插槽中存储了一个包含两个元素的列表。但每次嵌套列表的总深度都在减少。该列表在第一个插槽中存储了一个列表,因此
x[[1]][[1]]
返回一个列表。(您的命令以三个嵌套的
list()
调用开始)。你期望得到什么回报?或者你想被退回什么?