【发布时间】:2015-05-29 07:36:24
【问题描述】:
我想创建一个向量z,它只包含 1 或 -1。是否需要 1 或 -1 取决于 RSI 的值:
如果 RSI 大于 70,则 z 应为 -1
如果 RSI 小于 30,则 z 应为 1
对于所有其他情况:z 应与之前的 z 具有相同的编号。
这意味着z = z(t-1)
RSI 是一个包含 0 到 100 之间数字的向量。到目前为止,我使用了 ifelse 条件。
rsi <- RSI(YENDOL, n=14)
z <- 0
z <- ifelse(rsi >= 70,-1,z)
z <- ifelse(rsi <= 30,1,z)
有了这个,我创建了一个包含 0、1 和 -1 的 z 向量。下一步是根据先前的值(z t-1) 将零更改为 1 或 -1。这就是我卡住的地方。稍后我需要将向量与另一个向量相乘。
【问题讨论】:
-
您可以通过
idx <- which(z == 0)获得0s 的索引。从那里,您可以使用例如引用以前的值z[idx] <- ifelse(rsi[idx-1] >= 70,-1, 0)。 (对于第一个值为 0 的值会引发错误,因为没有索引 idex-1=0-1-=-1)。 -
您也可以考虑使用 dplyr 包中的
lag函数。
标签: r if-statement