2016-05-07 30 views
1

ich eine Liste haben, zum Beispiel:Konvertieren Sie mehrere Elemente einer Liste in eine Matrix R

[[1]] 
       [,1] 
[1,] -1.775291e-04 
[2,] -1.267184e-04 
[3,] -1.573868e-03 
[4,] 4.157234e-02 
[5,] -4.864003e-02 
[6,] 2.316697e-05 

[[2]] 
       [,1] 
[1,] -0.0010882973 
[2,] 0.0009780598 
[3,] 0.0003006506 
[4,] 0.1579244926 
[5,] 0.1655930418 
[6,] -0.0006471336 

[[3]] 
       [,1] 
[1,] 2.861335e-03 
[2,] -3.259585e-05 
[3,] 3.377353e-03 
[4,] 1.224368e-02 
[5,] 6.205352e-02 
[6,] -3.028701e-04 

[[4]] 
       [,1] 
[1,] 0.0023484525 
[2,] -0.0007958971 
[3,] 0.0038275408 
[4,] -0.1705923272 
[5,] -0.0706761005 
[6,] -0.0004604092 

Ich möchte, dies ändern, so dass ich eine Matrix, wo jede Liste die erste Zeile wird von der Datentabelle würde ich im Grunde jedes Element der Liste transponieren und sie dann übereinander legen, damit ich später mit ihnen umgehen kann.

+3

Versuchen Sie 'do.call (rbind, lapply (x, c))', wobei 'x' Ihre Liste ist. – nicola

+0

Hey danke, das ist großartig. Wenn es Ihnen nichts ausmacht, können Sie mir helfen zu erklären, was das "c" in der "lapply" -Funktion ist? Ich weiß nicht genau was es ist! –

+0

'c' ist vielleicht die am meisten verwendete Funktion in R, Sie sollten es wissen. In diesem Fall besteht sein Zweck darin, die Elemente der Liste, die Matrixobjekte sind, zu Vektoren derart zu zwingen, dass sie zusammen "verknüpft" werden können. – nicola

Antwort

2

Wenn d ist Ihre Liste:

d = list(matrix(rnorm(6), ncol = 1), matrix(rnorm(6), ncol = 1),matrix(rnorm(6), ncol = 1),matrix(rnorm(6), ncol = 1)) 

Dann ist diese nur verwenden:

t(sapply(d, c)) 

in einer 4x6-Matrix führen.

  [,1]  [,2]  [,3]  [,4]  [,5]  [,6] 
[1,] -0.02910676 -0.8722619 -1.48340110 -1.9914850 0.80751174 -1.1062207 
[2,] -0.38604263 0.6417695 0.02404823 -0.3484978 -1.03931644 1.0919702 
[3,] 0.19229699 0.3389690 1.68451808 0.7688967 0.01010725 -0.3203104 
[4,] 0.36910577 -0.4922259 0.81362335 -1.9770308 0.65197010 0.2063001 
1

Wenn L die Liste ist dann:

t(simplify2array(L)) 

Keine Pakete verwendet werden.

Verwandte Themen