Rのリストの要素のペアごとの組み合わせを反復し、その組み合わせを入力として使用して関数を実行したいとします。リスト内の要素の組み合わせに関数を適用する
この最小限の例では、I(1)は3つの行列を定義し、(2)それらを要素として行列を含むリストに結合し、次に(3)は要素の組み合わせの内積を計算したいリスト(すなわち、マトリックス1対マトリックス2およびマトリックス2対マトリックス3)。
set.seed
m1 = as.matrix(replicate(2, rnorm(2)))
m2 = as.matrix(replicate(2, rnorm(2)))
m3 = as.matrix(replicate(2, rnorm(2)))
matrix.list = list(m1, m2, m3)
dot.prod = function(matrix.x, matrix.y){
return(matrix.x %*% matrix.y)
}
は、これまでのところ私はdot.prodのための入力としてmatrix.listのすべての組み合わせを持って、次の()ネストされたループを使用しています。
for (i in 1:length(matrix.list)){
for (j in 1:length(matrix.list)){
print(dot.prod(matrix.list[[i]], matrix.list[[j]]))
}
}
Rの組み合わせ関数(combn()など)を使用してこれを行うことは可能ですか?私はどんな提案にも非常に感謝しています。
編集:関数自体は問題ではありません - 私はちょうどあなたを与える
oo <- outer(matrix.list, matrix.list, Vectorize(crossprod, SIMPLIFY = FALSE))
をやってみましょう任意のR関数の入力として
あなたはこの例では所望の出力再現性の例(ちょうど先頭に 'set.seed'を追加)し、ショーを提供してもらえますか?最後にどのような構造を望んでいるのか、どの構造から始めているのかは私には完全には分かりません。 – lmo