7
votes

Comment convertir une liste en matrice dans R

J'ai une liste de vecteurs, comme ceci:

       [,1] [,2]
 [1,]   1    1
 [2,]   1    2
 [3,]   1    7
 [4,]   1    9
 [5,]   1   10
 [6,]   1   13
 [7,]   1   14
 [8,]   1   15
 [9,]   1   20
[10,]   2    3
[11,]   2    4
[12,]   2    5
[13,]   2    6
[14,]   3    8
[15,]   3   11
[16,]   3   12
[17,]   4   16
[18,]   4   17
[19,]   4   18
[20,]   4   19
[21,]   5   21
[22,]   5   22
[23,]   5   23


2 commentaires

S'il vous plaît essayez d'utiliser une terminologie cohérente. Votre titre de question demande un data.frame , mais votre question demande un matrice .


Vous avez déjà une période de réponse, mais vérifier également la cause de la mine fond est très utile pour sa flexibilité dans la prise comme entrée data.frame , tableau et Liste et pour les différentes options "Melting", vous pouvez faire varier les paramètres.


3 Réponses :


10
votes

Vous pouvez utiliser Unlist code> pour obtenir les valeurs de la liste, puis utiliser sapply code> pour obtenir le nombre de valeurs dans chaque élément de la liste.

# Generate the list
a <- list(1:10, 20:30, 40:45)
# Find the number of elements
num.el <- sapply(a, length)
# Generate the matrix
res <- cbind(unlist(a), rep(1:length(a), num.el))


0 commentaires

2
votes

Si l est votre liste d'origine: xxx


0 commentaires

8
votes
library(reshape2)

lst <- list(c(1:3), c(11:12), c(22))

> melt(lst)
  value L1
1     1  1
2     2  1
3     3  1
4    11  2
5    12  2
6    22  3

0 commentaires