Как добавить элементы в список в R (цикл) [дубликат]
этот вопрос уже есть ответ здесь:
Добавить объект в список в R в амортизированное постоянное время, O (1)?
16 ответов
Я хотел бы, чтобы добавить элементы в список в цикле (я не знаю точно, сколько)
такой:
l <- list();
while(...)
l <- new_element(...);
В конце l[1] будет моим первым элементом,l[2] мой второй и так далее.
вы знаете как поступить?
2 ответов:
вы не должны добавить в свой список с помощью
cвнутри цикла, потому что это может привести к очень медленный код. В основном, когда вы делаетеc(l, new_element), копируется все содержимое списка. Вместо этого вам нужно получить доступ к элементам списка по индексу. Если вы знаете, как долго ваш список будет, лучше всего инициализировать его до этого размера с помощьюl <- vector("list", N). Если вы этого не сделаете, вы можете инициализировать его, чтобы иметь длину, равную некоторому большому числу (например, если у вас есть верхняя граница числа итерации), а затем просто выберите ненулевые элементы после завершения цикла. В любом случае, основной момент заключается в том, что у вас должен быть индекс, чтобы отслеживать элемент списка и добавлять его, напримерi <- 1 while(...) { l[[i]] <- new_element i <- i + 1 }для получения дополнительной информации взгляните на Patrick Burns'The R Inferno (Глава 2).
Comments