创建一个新向量并将其成分基于另一个向量的先前迭代?

时间:2018-10-20 22:08:22

标签: r

我正在尝试检验用于评估股票期权的假设的盈利能力。以下是我正在尝试做的简化版本。当评估变量(eee)低于-1时,我要购买它,然后我要 保持直到它回到-1以上(而不是继续买入)。因此,我试图为eee低于-1时创建一个逻辑向量(fff)。然后,根据fff是否为TRUE以及其前一个分量为FALSE来假设ggg是逻辑向量。

 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 :(得分:0)

我很确定你想这样做。您为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
  }
}