首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >堆叠数组切片( >2维的rbind)

堆叠数组切片( >2维的rbind)
EN

Stack Overflow用户
提问于 2013-02-13 23:47:15
回答 1查看 863关注 0票数 3

我有一系列的lapply调用,给我留下了一个数组列表。第一个维度在数量上不同,其中两个维度是相同的。我希望将每个“行”(第一维)放在彼此的顶部,就像rbind对二维数组(矩阵)所做的那样。

数据如下所示:

代码语言:javascript
复制
la <- list( array( dim=c(1,6,7) ), array( dim=c(2,6,7) ), array( dim=c(3,6,7) ) )

我不能使用do.call(rbind, la),因为它只是把它展平成一个矩阵。

我可以这样写:

代码语言:javascript
复制
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
   }
} 

但是这样的函数肯定已经存在了吧?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-13 23:53:20

我想来自abindabind会这样做吗?

代码语言:javascript
复制
library(abind)
abind(la[[1]],la[[2]],la[[3]],along = 1)

除了Curry解决方案之外,这似乎也是可行的:

代码语言:javascript
复制
do.call("abind",list(la,along = 1))
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14857358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档