R: Ошибка в L oop, замена имеет нулевую длину - PullRequest
0 голосов
/ 21 января 2020

Я пытался найти решение, глядя на другие вопросы, но никто не подходит для моих нужд.

Я получаю ошибку в этом воспроизводимом примере:

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] <- моделирование1 [j , i] + rnorm [j, i] + (бета *: замена имеет нулевую длину </p>

Чего мне не хватает? Я действительно горю своим мозгом, пытаясь найти опечатку / ошибку

1 Ответ

1 голос
/ 22 января 2020

Работает без ошибок:

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))
   }
}
...