我想在循环中将元素添加到列表中(我不确切知道多少)
像这样:
l <- list();
while(...)
l <- new_element(...);
最后,l[1]
将是我的第一个元素,l[2]
是我的第二个元素,依此类推。
你知道怎么办吗?
答案 0 :(得分:129)
您不应该在循环中使用c
添加到列表中,因为这会导致代码非常慢。基本上,当您执行c(l, new_element)
时,将复制列表的全部内容。而不是那样,您需要通过索引访问列表的元素。如果您知道列表的长度,最好使用l <- vector("list", N)
将其初始化为此大小。如果不这样做,则可以将其初始化为长度等于某个大数(例如,如果迭代次数有上限),然后在循环结束后选择非NULL元素。无论如何,基本点是你应该有一个索引来跟踪列表元素并使用例如
i <- 1
while(...) {
l[[i]] <- new_element
i <- i + 1
}
欲了解更多信息,请查看Patrick Burns'The R Inferno(第2章)。
答案 1 :(得分:14)
以下内容将元素添加到循环中的列表中。
l<-c()
i=1
while(i<100) {
b<-i
l<-c(l,b)
i=i+1
}