【问题标题】:R: Error in a Loop, replacement has length zeroR:循环中的错误,替换的长度为零
【发布时间】:2020-01-21 09:58:01
【问题描述】:

我试图寻找其他问题的解决方案,但没有一个适合我的需求。

我在这个可重现的例子中得到了错误:

m <- 0

vectorsd<-  rep(0.2, 183)

dgmean <- -0.41

  rnorm <- as.data.frame(rnorm(183, mean = m, sd = vectorsd))

for (i in 1:length(rnorm$`rnorm(183, mean = m, sd = vectorsd)`))  {
  rnorm[,i] <- rnorm(183, mean = m, sd = vectorsd)
}

simulation1 <- matrix(1,184,183)

beta <- -0.21

##For each column (each value of the forward curve)
for (i in 1:length(simulation1[1,])) {
  ##For each element of a whole column (each day since the starting of the product)
  for (j in 1:length(simulation1[,1])-1) {
    simulation1[j+1,i] <- simulation1[j,i]+rnorm[j,i]+(beta*(simulation1[j,i]-dgmean))
  }
}

我希望从第二行开始将simulation1 的每一行替换为转换simulation1[j,i]+rnorm[j,i]+(beta*(simulation1[j,i]-dgmean)),但我得到了这个错误:

模拟错误1[j + 1, i]

我错过了什么?我真的很想找到错字/错误

【问题讨论】:

  • 此示例不可重现。 m、vectorsd 和 dgmean 是未知的。虽然您让我们知道前两者是恒定的(请包括它们),但 dgmean 不清楚。
  • @mnist 我希望它现在已修复。
  • 在故障点,ij 处于违规状态。您现在可以在循环之外检查单个表达式及其维度,并查看您所期望的与您得到的不同。
  • 这:1:length(simulation1[,1])-1 产生从 0 开始的序列。由于 R 中没有 0 的索引,simulation[0,i] 返回 numeric(0)
  • 1:(length(simulation1[,1])-1) 也可以

标签: r loops for-loop


【解决方案1】:

这运行没有任何错误:

m <- 0
vectorsd<-  rep(0.2, 183)
dgmean <- -0.41
rnorm <- as.data.frame(rnorm(183, mean = m, sd = vectorsd))

for (i in 1:length(rnorm$`rnorm(183, mean = m, sd = vectorsd)`))  {
   rnorm[,i] <- rnorm(183, mean = m, sd = vectorsd)
}

simulation1 <- matrix(1,184,183)
beta <- -0.21

##For each column (each value of the forward curve)
for (i in 1:length(simulation1[1,])) {
  ##For each element of a whole column (each day since the starting of the product)
   for (j in 1:(length(simulation1[,1]) - 1)) {
     simulation1[i,j] <- simulation1[i,j]+rnorm[i,j]+(beta*(simulation1[i,j]-dgmean))
   }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    相关资源
    最近更新 更多