将函数应用于具有分组变量的多维数组

我有我认为会是一个简单的问题,但我找不到合适的答案.我有一个多维数组v [x,y,z],我想使用分组变量(组)沿z维度向数组应用一个函数.这是一个例子(在R中):

v<-1:81
dim(v)<-c(3,3,9)
group<-c('a','a','a','b','b','b','c','c','c')

鉴于分组变量有3个级别(a,b和c),我正在寻找的结果(out)是一个3x3x3维的数组.我可以使用以下代码获取上面的示例:

out1<-apply(v[,,c(1:3)],c(1,2),sum)
out2<-apply(v[,,c(4:6)],c(1,2),sum)
out3<-apply(v[,,c(7:9)],c(1,2),sum)

library(abind)
out<-abind(out1, out2, out3, along=3) 

我的问题是,是否存在获得上述结果的一般方法,可以应用于大维数组和长分组向量.

最佳答案
简单:

out <- apply(v, c(1, 2), by, group, sum)

但要以完全相同的顺序获取数据:

out <- aperm(apply(v, c(1, 2), by, group, sum), c(2, 3, 1))

转载注明原文:将函数应用于具有分组变量的多维数组 - 代码日志