为什么添加到列表中的R行为取决于赋值顺序

为什么添加到列表中的R行为取决于赋值顺序,r,R,添加到子列表取决于列表结构。将原子元素作为第一个操作添加到子列表不会形成子列表 有简单的测试用例 tl <- list() tl[['a']][['aa']] <- list(1,2,3) tl[['a']][['bb']] <- 'b' tl[['a']][['cc']] <- list('a','b','c','d') bl <- list() bl[['bb']] <- 'b' bl[['aa']] <- list(1,2,3) bl[['cc'

添加到子列表取决于列表结构。将原子元素作为第一个操作添加到子列表不会形成子列表

有简单的测试用例

tl <- list()
tl[['a']][['aa']] <- list(1,2,3)
tl[['a']][['bb']] <- 'b'
tl[['a']][['cc']] <- list('a','b','c','d')

bl <- list()
bl[['bb']] <- 'b'
bl[['aa']] <- list(1,2,3)
bl[['cc']] <- list('a','b','c','d')

cl <- list()
cl[['a']][['bb']] <- 'b'
cl[['a']][['aa']] <- list(1,2,3)
cl[['a']][['cc']] <- list('a','b','c','d')

dl <- list()
dl[['bb']] <- 'b'
dl[['aa']] <- list(1,2,3)
dl[['cc']] <- list('a','b','c','d')
nl <- list()
nl[['a']] <- dl

tl这个“问题”是
[[谢谢@MrFlick!的默认行为,这是有道理的。事实上,我已经编写了大量使用autovivification的Perl代码。我应该看到这与R如何将单行矩阵展平为通常是PITA的向量有关。
x <- NULL
x[["b"]] <- 'c'
# str(x)
#   Named chr "c"
#  - attr(*, "names")= chr "b"
cl <- list()
cl[['a']] <- list()
cl[['a']][['bb']] <- 'b'
cl[['a']][['aa']] <- list(1,2,3)
cl[['a']][['cc']] <- list('a','b','c','d')