3
我有一系列的lapply調用,給我留下了一個數組列表。第一個維度的數量不同,其中兩個維度相同。我想把每個'行'(第一個維度)放在彼此的頂部,就像rbind
對於2d陣列(矩陣)一樣。堆棧數組切片(rbind> 2維)
的數據是這樣的:
la <- list(array(dim=c(1,6,7)), array(dim=c(2,6,7)), array(dim=c(3,6,7)))
我不能使用do.call(rbind, la)
,因爲它只是把它展平的矩陣。
我可以寫這樣的:
rbind.array <- function(..., deparse.level=1) {
allargs <- list(...)
n <- length(allargs)
dims <- sapply(la,dim)
sel.dim <- which(!apply(dims, 1, function(x) length(unique(x))==1))
stopifnot(length(sel.dim)==1)
target.length <- apply(dims, 1, sum)[sel.dim]
target.dims <- dims[,1]
target.dims[sel.dim] <- target.length
res <- array(dim=target.dims)
for(i in seq(n)) {
# stack array slices one by one
}
}
但可以肯定這樣的功能已經存在?
它做,謝謝!我用'do.call(庫裏(abind,along = 1),la)'來避免輸入每一個。 – 2013-02-13 15:54:03