Objetivo: a partir de una lista de vectores de igual longitud, cree una matriz donde cada vector se convierta en una fila.
Ejemplo:
> a <- list()
> for (i in 1:10) a[[i]] <- c(i,1:5)
> a
[[1]]
[1] 1 1 2 3 4 5
[[2]]
[1] 2 1 2 3 4 5
[[3]]
[1] 3 1 2 3 4 5
[[4]]
[1] 4 1 2 3 4 5
[[5]]
[1] 5 1 2 3 4 5
[[6]]
[1] 6 1 2 3 4 5
[[7]]
[1] 7 1 2 3 4 5
[[8]]
[1] 8 1 2 3 4 5
[[9]]
[1] 9 1 2 3 4 5
[[10]]
[1] 10 1 2 3 4 5
Quiero:
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 1 2 3 4 5
[2,] 2 1 2 3 4 5
[3,] 3 1 2 3 4 5
[4,] 4 1 2 3 4 5
[5,] 5 1 2 3 4 5
[6,] 6 1 2 3 4 5
[7,] 7 1 2 3 4 5
[8,] 8 1 2 3 4 5
[9,] 9 1 2 3 4 5
[10,] 10 1 2 3 4 5
simplify2array
es una función básica bastante intuitiva. Sin embargo, dado que el valor predeterminado de R es completar primero los datos por columnas, deberá transponer la salida. (sapply
usossimplify2array
, como se documenta enhelp(sapply)
.)fuente
No es sencillo, pero funciona:
fuente
rjson
resultados,colMeans
funciona solo para este método! ¡Gracias!La
matrix
función incorporada tiene la buena opción de ingresar datosbyrow
. Combine eso con ununlist
en su lista de fuentes le dará una matriz. También necesitamos especificar el número de filas para que pueda dividir los datos no listados. Es decir:fuente
t( matrix( unlist(a), ncol=length(a) ) )
.donde 'a' es una lista. Funcionaría para un tamaño de fila desigual
fuente
fuente
NA
valores al final.