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