Я хочу добавить элементы в список в цикле (я не знаю точно сколько)
Например:
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
}
Для получения дополнительной информации посмотрите книгу Патрика Бернса The R Inferno (глава 2).