2015-03-27 9 views
6

Chcę utworzyć pustą listę, aby można było zastąpić jej elementy innymi listami.utwórz pustą listę, aby uzupełnić listę w R

Na przykład

simulations = 10 
seeds = sample(10000:99999, simulations, replace=F) 

test_function <- function(seedX){ 
    lista = list(seedX=seedX, 
       dataframe=data.frame(x=runif(10, -5.0, 5.0),y=rnorm(10,mean = 0,sd = 1))) 
    return(lista) 
} 
results <- vector("list", simulations) 
results[1] = test_function(seedX = seeds[1]) 

pojawia się następujący błąd:

Warning message: 
In results[1] = test_function(seedX = seeds[1]) : 
    number of items to replace is not a multiple of replacement length 

Co robię źle?

Dzięki!

Odpowiedz

7

Wystarczy zmienić

results[1] = test_function(seedX = seeds[1]) 

do

results[[1]] <- test_function(seedX = seeds[1]) 

Ważną zmianą jest [...] elementem operator indeksowania do [[...]] listy operatora indeksowania komponent, jak trzeba przypisać składnika List do nowej listy . Zobacz https://stat.ethz.ch/R-manual/R-devel/library/base/html/Extract.html.

(Należy również użyć operatora <- przypisania zamiast =, przede wszystkim zgodnie z konwencją R, ale także dlatego, = oznacza coś innego (i dlatego nie może być wykorzystywany do zadań) w innych kontekstach, na przykład o nazwie parametru specyfikacje w wywołaniach funkcji, dzięki czemu użycie <- pozwala uzyskać większą spójność.)