计算R中3维数组的平均值

时间:2019-04-03 00:30:17

标签: arrays r

我正在从4个pls模型中提取系数并取平均值。我想创建一个新模型,作为4种模型之一的副本,并用平均值代替系数以预测新数据。我知道使用交叉验证进行正确的设置可以为我做到这一点,但是我现在只想破解它。我尝试预测系数对象尺寸不正确时会发生我的问题。

在此示例中,我提取了四个维度为m#_reg_coef的数组([1:151, 1, 1:21])。这些pls模型有151个x变量和21个分量或潜在变量。用下面的代码求平均后,我得到一个[1:151, 1:21]的单个数据帧。...如何在保持正确尺寸的情况下取四个数组的平均值?...我正在寻找四个数组的平均值到尺寸为[1:151, 1, 1:21]

的输出
library(abind)

arr = abind(m1_reg_cof,m2_reg_cof, m3_reg_cof, m4_reg_cof, along = 2)
abds <- apply( arr,  c(1,3), mean)

dim(abds)
[1] 151  21

new_pls_model<-old_pls_model
new_pls_model$coefficients<-abds

test_predicted_1 <- predict(New_plsr_model, ncomp = 21, newdata = test_data_1)

错误

Error in object$coefficients[, , ncomp, drop = FALSE] : incorrect number of dimensions

1 个答案:

答案 0 :(得分:1)

感谢克里斯·霍尔布鲁克(Chris Holbrook)的评论,这是对我有用的答案。

"WFTXN0001: A transaction is already in progress" failure for JBeret batch after transaction timeout in JBoss EAP

添加属性...尺寸名称也必须与原始尺寸相同

library(abind)

#bind the four arrays into one array
arr = abind(m1_reg_cof,m2_reg_cof, m3_reg_cof, m4_reg_cof, along = 2)
dim(arr)
[1] 151   4  21

#average the four
abds <- apply( arr,  c(1,3), mean)
dim(abds)
[1] 151  21

#rehsape the output to match original
abds2 <- array(abds, dim = c(dim(abds)[1], 1, dim(abds)[2]))
dim(abds2)
[1] 151   1  21  

成功!