2012-09-17 20 views
35

Es ineficaz en R para expandir una estructura de datos en un bucle. ¿Cómo puedo preasignar un list de un cierto tamaño? matrix lo hace fácil a través de los argumentos ncol y nrow. ¿Cómo se hace esto en las listas? Por ejemplo:lista de preasignación en R

x <- list() 
for (i in 1:10) { 
    x[[i]] <- i 
} 

Supongo que esto es ineficaz. ¿Cuál es una mejor manera de hacer esto?

Respuesta

49

vector puede crear un vector vacío del modo y la longitud deseados.

x <- vector(mode = "list", length = 10) 
4

Algo como esto:

x <- vector('list', 10) 

Pero el uso de lapply es la mejor opción

19

Para ampliar lo @Jilber dijo, lapply es especialmente construido para este tipo de operación.

en lugar del bucle, se puede utilizar:

x <- lapply(1:10, function(i) i) 

Puede extender esto a ejemplos más complicados. A menudo, lo que está en el cuerpo del bucle for se puede traducir directamente a una función que acepta una sola fila que se parece a una fila de cada iteración del bucle.

Cuestiones relacionadas