2
行列のリストがある場合はRで分かりますが、Reduce
関数を使用してすべての行列に演算を適用できます。例:複数のリストに操作を適用する
l <- list(matrix(rnorm(16), 4, 4), matrix(rnorm(16), 4, 4))
Reduce(`*`, l)
ただし、この操作を複数のリストに適用する場合はどうすればよいですか。私はfor
ループでブルートフォースアプローチをすることができましたが、より良い方法があるはずです。私はmapply
l2 <- l
mapply(`*`, l, l2, SIMPLIFY = FALSE)
で二つのリストを行うことができます。しかし、私はより多くのその2を持っている場合、私はそれを解決するかどうかはわかりません。エラーで
以下の考えすべての結果:
l3 <- l2
mapply(`*`, l, l2, l3, SIMPLIFY = FALSE)
Error in .Primitive("*")(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]]) :
operator needs one or two arguments
Reduce(`*`, list(l, l2, l3))
Error in f(init, x[[i]]) : non-numeric argument to binary operator
所望の出力は、各リスト内の各行列の要素単位製品と長さ2のリストです。ブルートフォースループは次のようになります
out <- vector("list", length = 2)
for(i in 1:2){
out[[i]] <- l[[i]] * l2[[i]] * l3[[i]]
}