You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言出现nonconformable arrays报错:最优权重计算代码如何修复?

R语言最优权重计算报错修复:non-conformable arrays

我编写了如下用于计算最优权重的R语言代码:

return_vector_2 <- rbind(0.08,0.06)
covmatrix_2 <-matrix(c(0.3,0.1,0.1,0.2),nrow=2)
target_return <- 0.1
onevector2 <- rbind(1,1)
onevector2_t <- cbind(1,1)
a2beregnet <- onevector2_t %*% solve(covmatrix_2) %*% onevector2
b2beregnet <- onevector2_t %*% solve(covmatrix_2) %*% Return_vector2
c2beregnet <- t(Return_vector2) %*% solve(covmatrix_2) %*% Return_vector2
d2beregnet <- a2beregnet * c2beregnet - b2beregnet^2
    

optimal_weights_2 <- ((a2beregnet*target_return-b2beregnet)/(d2beregnet)) * solve(covmatrix_2) %*% return_vector_2
+((c2beregnet-target_return*b2beregnet)/(d2beregnet)) %*% solve(covmatrix_2) %*% onevector2

运行到optimal_weights_2行时弹出报错:

Error in ((a2beregnet * target_return - b2beregnet)/d2beregnet) * solve(covmatrix_2) %*% :
non-conformable arrays

按技术逻辑,标量与矩阵相乘不应存在问题,请问该如何修复此报错?


修复方案

  • 统一变量名大小写:代码中定义的是小写开头的return_vector_2,但计算b2beregnet和c2beregnet时误用了大写开头的Return_vector2,这会导致变量取值错误,需修正为一致的变量名。
  • 修正矩阵乘法运算符:第二个项中的标量((c2beregnet-target_return*b2beregnet)/(d2beregnet))与矩阵solve(covmatrix_2)相乘时,应使用元素-wise乘法*而非矩阵乘法%*%。%*%要求两侧数组维度严格匹配,标量与矩阵的合法乘法需用*。
  • 调整代码换行格式:将+号放在上一行末尾或当前行开头(保持缩进),确保R将其识别为同一表达式的延续,避免解析为独立语句。

修复后的完整代码

return_vector_2 <- rbind(0.08,0.06)
covmatrix_2 <- matrix(c(0.3,0.1,0.1,0.2), nrow=2)
target_return <- 0.1
onevector2 <- rbind(1,1)
onevector2_t <- t(onevector2)  # 用转置函数替代手动cbind,更规范
a2beregnet <- onevector2_t %*% solve(covmatrix_2) %*% onevector2
b2beregnet <- onevector2_t %*% solve(covmatrix_2) %*% return_vector_2  # 修正变量名
c2beregnet <- t(return_vector_2) %*% solve(covmatrix_2) %*% return_vector_2  # 修正变量名
d2beregnet <- a2beregnet * c2beregnet - b2beregnet^2

# 修复运算符和换行问题
optimal_weights_2 <- ((a2beregnet*target_return - b2beregnet)/d2beregnet) * solve(covmatrix_2) %*% return_vector_2 +
  ((c2beregnet - target_return*b2beregnet)/d2beregnet) * solve(covmatrix_2) %*% onevector2

内容的提问来源于stack exchange,提问作者Markus Larsen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 09:43:32