r - 减去或分割矩阵时出现“不一致的数组”错误
问题描述
我有一个 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 中的错误:不一致的数组
任何解决方法的想法?我想有一个简单的解决方法。
解决方案
尝试
colMeans(abs(sweep(matrixoutput, 1, matrixactual)) / rep(matrixactual,3))
这里的关键是跟踪维度。您可以轻松地将相同维度的矩阵相减,但是当维度不同时,它会变得很棘手。在您的情况下,当您尝试从矩阵中减去向量时,R 会给您一条错误消息。
在这里,从 中的相应行中sweep(a, 1, b)
删除每个值。然后你需要用一个尺寸与 对齐的对象进行划分,如果你重复3 次就是这种情况。b
a
matrixoutput
matrixactual
另一种选择是
colMeans((matrixoutput - rep(matrixactual, 3)) / rep(matrixactual,3))
推荐阅读
- c# - 您如何像 Outlook 一样获得日期的日历周数?
- c# - darksky api:TLS 要求已更改,库不再工作
- asp.net-core - Asp.Net Core,将部分视图加载到表单中并尝试在表单提交时获取模型列表
- rstudio - 未能在导航栏网站 Hugo Academic 主题中放置徽标
- angular - 如何在两个不同的表之间存储一行的拖动选项元素
- python - 不明白为什么简单的正则表达式不匹配
- mysql - 从表mySQL中同时选择最大的n个值和最小的n个值
- strapi - Strapi 覆盖管理面板控制器
- c++ - 如何在 C++ 中打印一个最多 6 位十进制数字的数字?
- javascript - 尝试使用 react-scroll 滚动到特定的 div