【问题标题】:Creating a new vector and basing its components on the previous iteration of another vector?创建一个新向量并将其组件基于另一个向量的先前迭代?
【发布时间】:2018-10-20 22:08:21
【问题描述】:

我正在尝试测试我对股票期权估值的假设的盈利能力。下面是我正在尝试做的简化版本。当评估变量 (eee) 低于 - 1 时,我想要它购买,然后我想要 持有直到它回到-1以上(而不是继续购买)。所以我试图为eee低于-1时创建一个逻辑向量(fff)。那么 ggg 应该是一个逻辑向量,基于 fff 是否为 TRUE 并且它的前一个组件是否为 FALSE。

 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

【问题讨论】:

  • R索引从1开始。所以i-1是0。你的意思是2:500

标签: r


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 2018-01-06
    • 2022-06-28
    • 2016-05-11
    • 1970-01-01
    • 2012-03-13
    • 2017-08-29
    相关资源
    最近更新 更多