【发布时间】:2018-05-08 13:26:20
【问题描述】:
这是我的代码:
indices <- as.matrix(sapply(cpi_calc[2:nrow(cpi_calc), 1:ncol(cpi_calc)], as.numeric))
weigths <- as.matrix(sapply(cpi_calc[1, 1:ncol(cpi_calc)], as.numeric))
CPI77_82 <- indices %*% weights
我想用索引矩阵和权重向量计算 CPI。矩阵和向量都在变量窗口中显示为 num。我不知道为什么矩阵乘法不起作用。
Error in indices %*% weights :
requires numeric/complex matrix/vector arguments
我知道还有很多其他类似的问题,但我的代码对我来说似乎很好,我尝试了其他类似问题的所有答案。请帮忙! :)
编辑:
> cpi_calc[2:6, 1:6]
# A tibble: 5 x 6
X__1 X__2 X__3 X__4 X__5 X__6
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 100.00 100.00 100.00 100.00 100.00 100.00
2 99.99 100.00 100.07 100.01 100.80 101.59
3 99.52 99.58 99.94 100.01 101.03 101.38
4 99.46 99.44 99.85 100.01 101.03 101.03
5 99.13 99.37 99.79 99.97 101.00 101.82
> t(cpi_calc[1, 1:6])
[,1]
X__1 0.358
X__2 0.359
X__3 0.060
X__4 0.419
X__5 0.191
X__6 0.296
【问题讨论】:
-
你能提供一个小的输入样本和想要的结果吗?顺便说一句,你确定你不只是想要
indices * weights吗?这对于使用权重计算 CPI 是有意义的 -
嗯,数据很大。索引矩阵为 64x111,权重向量为 111x1,如果有帮助,我可以将数据上传到 google.sheets 吗?
-
5x6 索引矩阵和 6x1 权重矩阵适用于这个问题。
-
您得到的错误通常是当其中一个表是 data.frame 时。我看到您的代码使用 as.matrix,但仔细检查 str(indices) 和 str(weights)。
-
在我的问题中添加了一个示例
标签: r matrix vector error-handling matrix-multiplication