如何在R(循环)中向列表添加元素

时间:2014-10-22 13:25:02

标签: r

我想在循环中将元素添加到列表中(我不确切知道多少)

像这样:

l <- list();
while(...)
   l <- new_element(...);

最后,l[1]将是我的第一个元素,l[2]是我的第二个元素,依此类推。

你知道怎么办吗?

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
}