Objectif: à partir d'une liste de vecteurs d'égale longueur, créer une matrice où chaque vecteur devient une ligne.
Exemple:
> 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
Je voudrais:
[,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
est une fonction de base assez intuitive. Cependant, étant donné que la valeur par défaut de R est de remplir d'abord les données par colonnes, vous devrez transposer la sortie. (sapply
utilisesimplify2array
, tel que documenté danshelp(sapply)
.)la source
Pas simple, mais ça marche:
la source
rjson
résultats,colMeans
ne fonctionne que pour cette méthode! Je vous remercie!La
matrix
fonction intégrée a la possibilité de saisir des donnéesbyrow
. Combinez cela avec ununlist
sur votre liste de sources vous donnera une matrice. Nous devons également spécifier le nombre de lignes afin qu'il puisse fractionner les données non répertoriées. C'est:la source
t( matrix( unlist(a), ncol=length(a) ) )
.où «a» est une liste. Cela fonctionnerait pour une taille de ligne inégale
la source
la source
NA
plutôt les valeurs à la fin.