Создавать новый вектор и основывать его компоненты на предыдущей итерации другого вектора? - PullRequest
0 голосов
/ 21 октября 2018

Я пытаюсь проверить прибыльность имеющейся у меня гипотезы для оценки опционов на акции.Ниже приведена упрощенная версия того, что я пытаюсь сделать.Когда оценочная переменная (eee) опускается ниже - 1, я хочу купить ее, затем я хочу удерживать ее до тех пор, пока она не вернется выше -1 (в отличие от продолжения покупки).Поэтому я пытаюсь создать логический вектор (FFF) для когда Eee опускается ниже -1.Предполагается, что ggg будет логическим вектором, основанным на том, является ли fff ИСТИНА, а его предыдущий компонент - ЛОЖЬ.

 eee <-NULL

for(i in 1:500){
 eee[i] <- rnorm(n= 500) 
}

fff <- eee <= -1


ggg <- NULL

for(i in 1:500){
  if(fff[i - 1] == FALSE){
    ggg[i] <- fff[i]
  }else{
    ggg[i] <- FALSE
  }
} 

Все работает так, как предполагается, пока последний цикл for не вернет следующее:

Error in if (fff[i - 1] == FALSE) { : argument is of length zero

1 Ответ

0 голосов
/ 21 октября 2018

Я почти уверен, что ты хотел это сделать.Цикл, который вы использовали для eee, просто много раз заменял его случайными гауссовыми переменными, так что в этом нет необходимости, и, поскольку вы хотите посмотреть i-1, вы должны запустить цикл на один позже, начиная с 2.

eee <- rnorm(n= 500) 
fff <- eee <= -1
ggg <- vector(mode = "logical", length = 500)

for(i in 2:500){

  if(fff[i - 1] == FALSE){
    ggg[i] <- fff[i]
  }else{
    ggg[i] <- FALSE
  }
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...