Estoy escribiendo código R para crear una matriz cuadrada. Así que mi enfoque es:¿La mejor forma de asignar matriz en R, NULL vs NA?
- asignar una matriz del tamaño correcto
- bucle a través de cada elemento de mi matriz y llenarlo con un valor apropiado
Mi pregunta es muy simple: ¿cuál es la La mejor manera de preasignar esta matriz? Hasta el momento, tengo dos maneras:
> x <- matrix(data=NA,nrow=3,ncol=3)
> x
[,1] [,2] [,3]
[1,] NA NA NA
[2,] NA NA NA
[3,] NA NA NA
o
> x <- list()
> length(x) <- 3^2
> dim(x) <- c(3,3)
> x
[,1] [,2] [,3]
[1,] NULL NULL NULL
[2,] NULL NULL NULL
[3,] NULL NULL NULL
Por lo que yo puedo ver, el primero es un método más concisa que el segundo. Además, el primero llena la matriz con NA, mientras que el segundo está lleno de NULL.
¿Cuál es la "mejor" forma de hacer esto? En este caso, estoy definiendo "mejor" como "mejor desempeño", porque esto es computación estadística y esta operación se llevará a cabo con grandes conjuntos de datos.
Mientras que el primero es más conciso, no es impresionantemente más fácil de entender, por lo que siento que esto podría ir en cualquier dirección.
Además, ¿cuál es la diferencia entre NA y NULL en R? ? NA y? NULL me dicen que "NA" tiene una longitud de "1" mientras que NULL tiene una longitud de "0" - pero, ¿hay más aquí? ¿O una mejor práctica? Esto afectará qué método utilizo para crear mi matriz.
No preguntado es, ¿por qué desea * bucle * sobre los elementos de su matriz? ¿Es posible que puedas usar una operación vectorizada en su lugar? ¡Esa debería ser tu próxima pregunta aquí! :) – Harlan
@Harlan que es básicamente a lo que me refiero en esta pregunta aquí: http://stackoverflow.com/questions/1719447/outer-equivalent-for-non-vector-lists-in-r. Si tienes una sugerencia, ¡me encantaría escucharla! – poundifdef