Comment puis-je faire une matrice à partir d'une liste de vecteurs dans R?
Objectif: à partir d'une liste de vecteurs de même longueur, de 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 veux:
[,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
Vous devez vous connecter pour publier un commentaire.
Une option est d'utiliser
do.call()
:simplify2array
est une fonction de base qui est assez intuitif. Cependant, puisque R est la valeur par défaut est de remplir les données par colonnes d'abord, vous aurez besoin de transposer la sortie. (sapply
utilisesimplify2array
, comme documenté danshelp(sapply)
.)Pas simple, mais il fonctionne:
rjson
résultats,colMeans
fonctionne uniquement pour cette méthode! Merci!!!!Le haut-
matrix
fonction a la bonne option à saisir des donnéesbyrow
. Combinez cela avec ununlist
sur votre liste source vous donnera une matrice. Nous avons également besoin de spécifier le nombre de lignes de sorte qu'il peut casser la non cotées de données. Qui est:t( matrix( unlist(a), ncol=length(a) ) )
.où 'a' est une liste de.
Serait travailler pour l'inégalité de la taille de ligne
NA
valeurs à la fin à la place.