我想了解一下您最初的轉型。你叫從apply
rbind
,但不會做任何事情 - 你也可以同樣呼籲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
那麼,你真的想完成什麼?我假設你有一對(30)矩陣切片,並想堆疊它們,然後再將它們拆散。如果是這樣,代碼會比@joran建議的更多。你需要一些調用aperm
(如@Patrick伯恩斯建議):
# 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'的調用沒有意義 - 因爲你只給出它一個參數,它不會做任何有用的事情。 'identity'會做同樣的事情......我在下面的答案中擴展了這個觀察。 – Tommy