私はあなたの最初の変換に疑問を抱いています。あなたはrbind
をapply
から呼び出しますが、それは何もしません。あなたはidentity
と呼ぶこともできます。
foo <- array(seq(150*40*30), c(150, 40, 30))
bar <- apply(foo, 3, rbind)
bar2 <- apply(foo, 3, identity)
identical(bar, bar2) # TRUE
これは本当に達成したかったのですか?私は、あなたが2つ(30)のマトリックススライスを持っていて、それらを積み重ねてから再び積み重ねることを前提としていました。もしそうなら、コードは@joranよりも複雑になるはずです。 (@Patrickバーンズが示唆したように)あなたはaperm
にいくつかの呼び出しが必要になります。いずれにせよ
# Make a sample 3 dimensional array (two 4x3 matrix slices):
m <- array(1:24, 4:2)
# Stack the matrix slices on top of each other
m2 <- matrix(aperm(m, c(1,3,2)), ncol=ncol(m))
# Reverse the process
m3 <- aperm(array(m2, c(nrow(m),dim(m)[[3]],ncol(m))), c(1,3,2))
identical(m3,m) # TRUE
、aperm
は本当に強力(とやや混乱)です。十分に学習価値があります...
'aaply'を見ましたか?それは通常あなたが期待する次元を与えるより良い仕事をします – hadley
'rbind'への呼び出しは意味をなさない - あなたはそれに1つの引数しか与えないので、何も役に立たないでしょう。 「同一性」は同じことをするでしょう...私は以下の答えでこの観察を拡大しました。 – Tommy