2016-05-07 8 views
1

にリストの複数の要素を変換します私は例えば、リストを持って行列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 

私は、各リストは、最初の行となり行列を持つように私はこれを変更したいのですが本質的には、リストの各要素を転置し、それらを上に置いて、後でそれらを扱うことができるようにしたいと考えています。

+3

'do.call(rbind、lapply(x、c))'を試してください。 'x'はあなたのリストです。 – nicola

+0

おかげで、それは素晴らしいです。あなたが気にしないなら、 "c"がラッフル機能にあることを説明するのに役立つでしょうか?私はそれが何であるかは分かりません! –

+0

'c'はおそらくRで最もよく使われる関数なので、あなたはそれを知っているはずです。この場合、その目的は、マトリックスオブジェクトであるリストの要素を、ベクトル化する方法でベクトルに強制することです。 – nicola

答えて

2

dはあなたのリストの場合:

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

は、それからちょうどこれを使用する:

t(sapply(d, c)) 

は、4×6の行列になります。

  [,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

Lの場合は、リストである:

t(simplify2array(L)) 

ませパッケージが使用されていません。

関連する問題