r - R中3-D数组中元素的平均值
问题描述
我想从每个元素都是 3-D 数组的列表中获取平均值。
示例,其中 ind1 表示 3-D 数组中的元素:
>data$ind1
, , rep1
[,1] [,2] [,3]
[1,] 58.93456 6.3580551 269.8844
[2,] 70.88502 -3.4082403 269.6049
[3,] 75.86015 2.0126083 264.9410
, , rep2
[,1] [,2] [,3]
[1,] 58.94869 6.3872151 269.9296
[2,] 71.04539 -3.4487939 269.5489
[3,] 75.85713 2.1556785 265.0365
, , rep3
[,1] [,2] [,3]
[1,] 59.04455 6.3075519 269.8789
[2,] 71.04752 -3.4541416 269.6695
[3,] 74.74456 1.9712155 265.3075
对于一个元素:
>apply(data$ind1, c(1, 2), mean)
[,1] [,2] [,3]
[1,] 58.96706 6.3587708 269.8968
[2,] 71.00619 -3.4402599 269.5941
[3,] 75.57361 2.0459055 265.0593
跨越许多元素,其中每个元素都有 2-4 次重复:
>for(i in data) {
apply(data[i], c(1, 2), mean)
}
我在正确的轨道上吗?谢谢!
解决方案
如果我正确理解您的情况,您希望对列表的每个元素(每个元素恰好是一个数组)使用apply
该mean
函数(就像您正在做的那样)。
执行此操作的有效方法是lapply
:
# example data
mylist <- list(
two = array(runif(2^3), dim=c(2,2,2)),
three = array(runif(3^3), dim=c(3,3,3)),
four = array(runif(4^3), dim=c(4,4,4))
)
# solution
lapply(mylist, apply, c(1,2), mean)
因为mean
不关心第三个数组维度有多大,所以你有多少并不重要ind
;不管有多少,它都会平均。
推荐阅读
- ruby-on-rails - 全局适用于所有模型,忽略选项模型明智
- ios - leadingSwipeActions 与自定义手势冲突
- google-cloud-platform - Google Cloud Run 上的最大响应标头长度是多少?
- java - JFace 数据绑定 MultiValidator 未重新评估
- mysql - 如何使用mysql查询删除冗余数据
- angular - 使用 ngFor 从对象中获取子对象
- xml - 克服 SQL Server 中 XML 输出的 2GB 限制
- xamarin.android - 应用程序在体内被杀死时没有通知
- android - 等待 ListAdapter 完成,以便我可以应用过滤器
- django - 与postgresql有关的芹菜错误,而django可以