当我开始预初始化 R 中的列表列表时,我想知道列表对象在用作 rep() 中的值时的行为。当我尝试以下...
listOfLists <- rep(list(1, 2), 4)
... listOfLists 是一个单一的列表:
1 2 1 2 1 2 1 2
但是,我会假设它是一个列表列表,其中最终包含值 1 和 2 :
1 2
1 2
1 2
1 2
为了获得所需的结果,我必须另外用 c() 包围值条目:
listOfLists <- rep(list(c(1, 2)), 4)
我想知道为什么在 R 中会出现这种情况。 list 不应该像通常那样创建一个功能齐全的列表,而不是做类似于 c() 的事情吗?为什么用 c() 对值进行分组实际上解决了这里的问题?
谢谢你的想法!
结论: Ben Bolker 和 Peyton 的帖子都给出了最终答案。这既不是 list()- 也不是 c()- 函数的行为。相反,rep() 似乎将列表和向量的条目合并为一个。用另一个容器包围这些值会使 rep() 实际上“忽略”第一个但重复第二个容器。