我想在一个循环中向一个列表添加元素(我不知道具体有多少个)。
像这样。
l <- list();
while(...)
l <- new_element(...);
最后,l[1]
将是我的第一个元素,l[2]
是我的第二个,以此类推。
你知道该如何进行吗?
你不应该在循环内使用 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(第二章)。