2014-10-22 18 views
43

chciałbym dodać elementy do listy w pętli (nie wiem dokładnie ile)Jak dodać elementy do listy w R (pętla)

Jak to:

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

Pod koniec, l[1] byłby moim pierwszym elementem, l[2] mój drugi i tak dalej.

Czy wiesz, jak postępować?

+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? –

+0

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

Odpowiedz

11

Następujący element dodaje do listy w pętli.

l<-c() 
i=1 

while(i<100) { 

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

Jaki jest cel 'b <- i 'w pętli? –

+13

Rosnące obiekty w pętli 'while'

+0

Dobra uwaga. Chciałem pokazać więcej miejsc, w których OP umieściłby element, który ma zostać dodany do listy, zamiast używać tylko "i" – Jason

67

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