Me gustaría añadir elementos a una lista en un bucle (no sé exactamente cuántos)
Así:
l <- list();
while(...)
l <- new_element(...);
Al final, l[1]
sería mi primer elemento, l[2]
mi segundo y así sucesivamente.
¿Sabes cómo proceder?
No deberías añadir a tu lista usando c
dentro del bucle, porque eso puede resultar en un código muy muy lento. Básicamente cuando haces c(l, nuevo_elemento)
, se copia todo el contenido de la lista. En lugar de eso, necesitas acceder a los elementos de la lista por índice. Si sabes lo larga que va a ser tu lista, lo mejor es inicializarla a este tamaño usando l <- vector("lista", N)
. Si no lo haces, puedes inicializarlo para que tenga una longitud igual a algún número grande (por ejemplo, si tienes un límite superior en el número de iteraciones) y luego simplemente elegir los elementos no NULL después de que el bucle haya terminado. De todos modos, el punto básico es que debes tener un índice para llevar la cuenta del elemento de la lista y añadir usando eso, por ejemplo
i <- 1
while(...) {
l[[i]] <- new_element
i <- i + 1
}
Para más información, echa un vistazo a Patrick Burns' The R Inferno (Capítulo 2).