首页 > 解决方案 > 我不断收到错误消息“eff_weights[i, ] <- eff.port$pw 中的错误:要替换的项目数不是替换长度的倍数”

问题描述

我是 R 新手,真的需要一些帮助。我不断收到错误消息

“eff_weights[i, ] <- eff.port$pw 中的错误:要替换的项目数不是替换长度的倍数”

当我运行循环时。有人可以帮我弄清楚我做错了什么。非常感谢您!

 # Create for loop to find efficient frontier

for (i in 1 : length(grid)) {
   eff.port <- portfolio.optim(returns, pm = grid[i], shorts =TRUE)
   vector_pm[i] <- eff.port$pm
   vector_psd[i] <- eff.port$ps
   eff_weights[i, ] <- eff.port$pw
}

标签: r

解决方案


如果没有您的数据样本或虚拟数据来重现问题,就很难提供特定的解决方案。但是,在您的循环中,您将列中的值向量分配给eff.port$pw数据框或矩阵的第 i 行eff_weights[i, ]。错误消息是说它们的长度不同 - 使用length()ordim()函数来比较这两者的长度。您的向量eff.port$pw和行eff_weight[i,]的长度必须相同。


推荐阅读