我在列表中附加了一个向量。该条目相继增长。
li <- list()
for(i in 1:10)
{
v <- runif(2)
if(i==1)
{
li[[1]] <- v
} else {
li[[1]] <- append(li[[1]],v)
}
}
我很难看到两种情况需要不同的代码1)li[[1]]
不存在且2)li[[1]]
存在。任何解决方案?
背景: 你不能用向量来初始化一个列表元素:
v <- NULL
v <- append(v,c(1,2,3))
作品
但
li <- list()
li[[1]] <- NULL
li[[1]] <- append(li[[1]],c(1,2,3))
引发错误,因为li[[1]]
无法初始化li[[1]] <- NULL
。
更新:我了解到这将适用于命名列表(这也增加了一些优雅),但可能存在(动态)情况,命名不是一个好的选择。
答案 0 :(得分:1)
我不确定你在这里需要loop
。但是您可以预先分配列表以避免处理空列表。您可以使用vector
进行分配:
n <- 10
li <- vector('list',n)
然后你只需分配每个元素:
for(i in 1:10) {
v <- runif(sample(n,1)) ## I choose a dynamic length here
## otherwise the example don't make sense
li[[i]] <- v
}
答案 1 :(得分:0)
初始化列表元素的正确方法是:
li <- list(NULL)
for(i in 1:10)
{
v <- runif(2)
li[[1]] <- append(li[[1]],v)
}
由于