2012-12-06 31 views
1

對於處理二維矩陣,rbindcbind是有用的功能。是否有更多的通用功能在更多維度上執行相同的操作?假設我有數據是這樣的:多維綁定

data <- lapply(c(11,22,33), function(i) matrix(i, nrow=2, ncol=4)) 

我想獲得的是:

data <- do.call(c, data) 
dim(data) <- c(2, 4, 3) 

但不必工作了所有的維度自己。

是否有提供此功能的功能,既可以是內置的,也可以是相當常見的軟件包的一部分?或者你想分享一下你自己的想法:這樣一個功能如何最優雅地實現?

加分點:

  • 如果函數給出了尺寸數量級的一些控制,然後aperm的後續調用可以避免的。
  • 這將是很好,如果可以通過要麼傳遞多個函數參數的參數的list工作,但使用do.calllist,任何一個就足夠了。
  • 我想使用.combine參數調用foreach這樣的函數。所以它應該能夠使用形式f(f(f(a, b), c), d)(每個調用只需要兩個參數,通常是前一個調用的結果)或者甚至是f(f(a, b), c, d)(兩個以上的參數,第一個仍然可能是前一個調用的結果),其中a, b, c, d全部具有相同的大小,從而導致尺寸1高於這些尺寸的矩陣,並且該尺寸中的尺寸爲4,對應於4個元素ad
+4

有一個名爲** abind **的軟件包具有相同名稱的功能。 – joran

+0

@joran,帖子爲答案! –

回答

2

abind軟件包正好具有此功能,並提供了大部分功能,但我沒有詳細檢查所有功能。

至少,它會給你一個開始,說明如何沿着這些路線實現某些東西。