2017-09-19 14 views
-2

はlist_xと呼ばれるリストが10の異なるマトリックスで構成され、すべてのこれらの行列のdimが今5 * 3 で、私がやりたいことはあると仮定しますR言語、リストから行列を抽出して新しい行列にマージする方法は?

  • は、各行列の最初の列を抽出し、垂直
  • 各行列の第2列を抽出し、新しいマトリックスにマージと垂直新しい行列Bにマージ
  • は、各行列の3列目を抽出し、垂直方向に新たな行列C

Iにマージtそれを願っていますが、ここに書くことができます

sapply(list_X, function(x) x[,1]) 

ありがとうございます。

+0

こんにちはグレース、あなたはデータを[最低使用例】(https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)を追加してくださいすることができますあなたの質問に。 – David

+0

list_X < - list(matirx1、matirx2、matirx3)#実際には、行列の数は10 > list_X [012] [1] [、1] [、2] [、3] [1、] 1 6 11 [2] 2 7 12 [3] 3 8~13 [4] 4 9 14 [5] 5 10 15 [[2]] [1] [2] [3] [1] 11 16 21 [2] 12 17 22 [3] 13 18 23 [4] 14 19 24 [5] 15 20 25 [3] ]、 [、1] [、2] [、3] [1、] 36 41 46[2、] 37 42 47 [3、] 38 43 48 [4、] 39 44 49 [5、] 40 45 50 –

答えて

0
list_X <- replicate(10, matrix(1:15, 5, 3), simplify = F) 

少し汚れていますが、これはトリックを行います(垂直マージで正確に何を意味するかはわかりません)。

lapply(1:3, function(y) sapply(1:10, function(x) list_X[[x]][,y])) 
+0

2つの驚くべきコモンラインがサンプルですが、複雑な機能を実現しています。ちなみに、縦にマージ、どのように、cbind()関数のように、明確な表現ではない:PThankあなた! –

+0

次に 't(sapply(...))'のように 'sapply'の前に転置を入れてください。 – sedsiv

+0

あなたのコードレベルはとても良いです。しかし、今日まで私はlapply(1:3 ...)がベクトルを受け入れることができる知っている... –

関連する問題