mom.wealth <- matrix(NA,nrow(dax.p),1)
mom.wealth[13,1]=1
mom.stocks <- matrix(NA,nrow(dax.p),ncol(dax.p))
for (row in 13:nrow(dax.p)-1) {
for (column in 2:ncol(dax.p)) {
mom.stocks[row,column] <- mom.wealth[row,1]*mom.weight[row,column]/dax.p[row,column]
}
mom.wealth[row+1,1] <- sum(mom.stocks[row,-1]*dax.p[row+1,-1])
}
这里的最后一行有问题。它没有出现任何错误消息,但所有结果都只是NA。
提前谢谢!
答案 0 :(得分:1)
问题的根本情况是for (row in 13:nrow(dax.p)-1)
行。
您可以尝试使用此简单代码来了解问题。
for (row in 13:16-1) {
print(row)
}
The above code will print like
[1] 12
[1] 13
[1] 14
[1] 15
这意味着在检查in
条件之前从13和16中减去1。
现在,在您的情况下,实际值位于13th
的{{1}}行,但您的循环从第12行开始。第12行的值为mom.wealth
。因此,后续行将获得NA
。
修复方法是:更改第NA
行
同
for (row in 13:nrow(dax.p)-1)
答案 1 :(得分:0)
尝试:
mom.wealth <- matrix(NA,nrow(dax.p),1)
mom.wealth[13,1]=1
mom.stocks <- matrix(NA,nrow(dax.p),ncol(dax.p))
for (row in 13:nrow(dax.p)-1) {
for (column in 2:ncol(dax.p)) {
mom.stocks[row,column] <- mom.wealth[row,1]*mom.weight[row,column]/dax.p[row,column] }
mom.wealth[row+1,1] <- sum(mom.stocks[row,-1]*dax.p[row+1,-1], na.rm = T) }
如果它不起作用,我需要数据集来理解问题......