首页 > 解决方案 > 减去或分割矩阵时出现“不一致的数组”错误

问题描述

我有一个 5x3 矩阵,称为matrixoutput

matrixoutput <- structure(c(755.012517738809, 713.680227809506, 796.559832334474, 
720.586278415567, 813.656728335122, 747.228849872966, 716.763851131365, 
790.005405393554, 719.099072835892, 794.80633176412, 747.924859415065, 
714.405749195011, 792.123774606548, 719.75129988389, 793.458302292789
), .Dim = c(5L, 3L))

我有一个 5x1 矩阵,称为matrixactual

matrixactual <- structure(c(743.2, 710.37, 787.77, 721.41, 808), .Dim = c(5L, 
1L))

我正在尝试为每一列运行“MAPE”计算matrixoutput

MAPE <- mean(abs((matrixactual-matrixoutput)/matrixactual) * 100)

但是,这会返回错误:

matrixactual - matrixoutput 中的错误:不一致的数组

任何解决方法的想法?我想有一个简单的解决方法。

标签: rmatrix

解决方案


尝试

colMeans(abs(sweep(matrixoutput, 1, matrixactual)) / rep(matrixactual,3))

这里的关键是跟踪维度。您可以轻松地将相同维度的矩阵相减,但是当维度不同时,它会变得很棘手。在您的情况下,当您尝试从矩阵中减去向量时,R 会给您一条错误消息。

在这里,从 中的相应行中sweep(a, 1, b)删除每个值。然后你需要用一个尺寸与 对齐的对象进行划分,如果你重复3 次就是这种情况。bamatrixoutputmatrixactual

另一种选择是

colMeans((matrixoutput - rep(matrixactual, 3)) / rep(matrixactual,3))

推荐阅读