R中的循环问题

时间:2018-02-15 18:08:29

标签: r

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。

提前谢谢!

2 个答案:

答案 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) } 

如果它不起作用,我需要数据集来理解问题......