nie należy dodać do swojej listy używając c
wewnątrz pętli, bo to może doprowadzić do bardzo powolnego kodu. Zasadniczo po wykonaniu c(l, new_element)
cała zawartość listy zostanie skopiowana. Zamiast tego musisz uzyskać dostęp do elementów listy według indeksu. Jeśli wiesz, jak długo twoja lista ma być, najlepiej zainicjować ją do tego rozmiaru, używając l <- vector("list", N)
. Jeśli nie, możesz go zainicjować, aby mieć długość równą dużej liczbie (np. Jeśli masz górną granicę liczby iteracji), a następnie wybierz elementy nie-NULL po zakończeniu pętli. W każdym razie, jest to, że podstawowy punkt powinien mieć współczynnik śledzić elementu listy i dodać za pomocą tego np
i <- 1
while(...) {
l[[i]] <- new_element
i <- i + 1
}
Aby uzyskać więcej informacji zajrzyj na Patrick Burns The R Inferno (rozdział 2).
Uprawa obiektów wewnątrz pętli (i użycie pętli 'while') nie jest zalecaną techniką R. Co decyduje o liczbie elementów? –
Może warto zajrzeć do tego postu, a także http://stackoverflow.com/questions/14455051/combine-lists-while-overriding-values-w-same-name-in-r – user20650