2016-10-19 10 views
0

私は配列を使って作業しようとしていますが、自分のデータで動作するものを作ることができません。私は配列に入れたい14個の行列を持っていますが、手作業でc(m1、m2、m3 ...)を書くことなくそれを行う方法を理解することはできません多くの行列がr個の配列から作られています

これ私は

print(a[1,4,2]) 

しかし:

m_list <- mget(paste0("well_", 0:13)) ###to make a list of all my matrices 

a <- array(c(m_list), 
     dim = c(7338, 15, 14)) 

が、私は私が何かを作成した配列を見しようとしたとき、私はこのように、一つの値を求めることを試みる原因それと右ではありません。私が試したものです列全体を取得します。

エラーは行列のリストにあると仮定します。助けてください

+0

'do.call(C、m_list)'。 abindパッケージもチェックしてください。 – Roland

答えて

0

c(m_list)の代わりにdo.call(c, m_list)を使用する必要があります。 (小行列のカップルを取ると何c(m_list)c(m1, m2)リターンを参照してみてください。)

をまた、あなたはどのようにできたのアレイでの作業は、もっと重要なのは、リストでの作業よりも優れているといくつかのより多くのかどうかを考えることをお勧めします最初に複数の行列を持たず、代わりにそれらをリストまたは配列として直接読み込み/定義することを避けてください。

+0

ありがとう、それは働いている:)私は間違ってデータを呼び出す必要があると思ったが、この 'do.call'関数に慣れていなかった。 – BStat

+0

私はちょっとしたコードを改良しようとしています。私は家族やループを適用することでまだ良くはありません(可能ならば私はループを避けるように言われましたが)。あなたが言っていることは、 'm_list'を直接使うことができるということです。 – BStat

+0

@BStat、はい、時にはそれは良いアイデアかもしれません。それはあなたがあなたのデータで次に何をしようとしているかによって異なります。学習目的のために、データを配列として、同時にリストとして持つこともできますし、遭遇する違いを確認することもできます。 – Julius

0

cの代わりにarrayファンクションコール内でunlistを使用することができます。

a = array(unlist(m_list), dim = c(dim(m_list[[1]]), length(m_list))) 

一部再現データ:

m1 = matrix(1:5, 5, 5) 
m2 = matrix(5:1, 5, 5) 
m_list = list(m1, m2) 
関連する問題