Как добавить элементы в список в R (цикл) [дубликат]



этот вопрос уже есть ответ здесь:




  • Добавить объект в список в R в амортизированное постоянное время, O (1)?

    16 ответов



Я хотел бы, чтобы добавить элементы в список в цикле (я не знаю точно, сколько)



такой:



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


В конце l[1] будет моим первым элементом,l[2] мой второй и так далее.



вы знаете как поступить?

567   2  
r

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).

следующие элементы добавляются в список в цикле.

l<-c()
i=1

while(i<100) {

    b<-i
    l<-c(l,b)
    i=i+1
}

Comments

    Ничего не найдено.