【问题标题】:How do I fix an off by one error for my for loop?如何为我的 for 循环修复一个错误?
【发布时间】:2020-02-05 10:10:06
【问题描述】:

我遇到了 for 循环的问题。它给了我“一个错误”。我确实计算了观察结果,确实是一次。我该如何解决?

代码:

delta = seq(0,1,0.05)
delta2 = seq(0,1,0.01)
delta3 = seq(0,1,0.001)

price1 = rep(1,length(delta))
price2 = rep(1,length(delta2))
price3 = rep(1,length(delta3))

for(i in 2:length(delta)){
  price1[i] = price1[i-1]+price1[i-1]*rnorm(1)*sqrt(delta)
  price1[i+1] = price1[i] + i
  print(price1[i+1])
}


plot(delta,price1[i+1], type = "l") #Error occurs here

for(i in 2:length(delta2)){
  price2[i] = price2[i-1] + price2[i-1]*rnorm(1)*sqrt(delta2)
  price2[i] = price2[i] + i
  print(price2[i])
}

plot(delta2, price2[i], type = "l") #error here

for(i in 2:length(delta3)){
  price3[i] = price3[i-1] +  price3[i-1]*rnorm(1)*sqrt(delta3)
  xprice3[i] = price3[i] + i
  print(price3[i])
}

plot(delta3, price3[i], type = "l") #error here



错误状态:

xy.coords(x, y, xlabel, ylabel, log) 中的错误: “x”和“y”长度不同

【问题讨论】:

    标签: r for-loop


    【解决方案1】:

    您实际上并不需要循环,但这就是您要寻找的吗?

    delta = seq(0,1,0.05)
    delta2 = seq(0,1,0.01)
    delta3 = seq(0,1,0.001)
    
    price1 = rep(1,length(delta))
    price2 = rep(1,length(delta2))
    price3 = rep(1,length(delta3))
    
    for(i in 2:length(delta)){
      price1[i] = price1[i-1]+price1[i-1]*rnorm(1)*sqrt(delta[i])
      price1[i] = price1[i] + i
      print(price1[i])
    }
    
    
    plot(delta,price1, type = "l") #Error occurs here
    
    for(i in 2:length(delta2)){
      price2[i] = price2[i-1] + price2[i-1]*rnorm(1)*sqrt(delta2[i])
      price2[i] = price2[i] + i
      print(price2[i])
    }
    
    plot(delta2, price2, type = "l") #error here
    
    for(i in 2:length(delta3)){
      price3[i] = price3[i-1] +  price3[i-1]*rnorm(1)*sqrt(delta3[i])
      price3[i] = price3[i] + i
      print(price3[i])
    }
    
    plot(delta3, price3, type = "l") #error here
    

    【讨论】:

      【解决方案2】:

      您可能正在寻找:

      delta = seq(0,1,0.05)
      delta2 = seq(0,1,0.01)
      delta3 = seq(0,1,0.001)
      
      price1 = rep(1,length(delta))
      price2 = rep(1,length(delta2))
      price3 = rep(1,length(delta3))
      
      for(i in 2:length(delta)){
         price1[i] = price1[i-1]+price1[i-1]*rnorm(1)*sqrt(delta[i])
      }
      plot(delta,price1, type = "l")
      
      
      for(i in 2:length(delta2)){
         price2[i] = price2[i-1]+price2[i-1]*rnorm(1)*sqrt(delta2[i])
      }
      plot(delta2,price2, type = "l")
      
      for(i in 2:length(delta3)){
        price3[i] = price3[i-1]+price3[i-1]*rnorm(1)*sqrt(delta3[i])
      }
      plot(delta3,price3, type = "l")
      

      【讨论】:

      • 仍然出现错误。更新:没关系。我的代码分为 3 个单独的块。这是其中的一部分。
      • 非常感谢!
      猜你喜欢
      • 1970-01-01
      • 2022-01-22
      • 2019-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多