在我的智慧尽头,很抱歉这是错误的地方,或者做错了。第一次在这里问。我是 R 新手,几乎没有编程经验(大学里的帕斯卡课程,并且很擅长宏媒体术语 - 所以,不那么害怕代码)。
为了让事情简短明了,我认为最好只是向您展示我拥有的东西,以及我想要的东西。我花了几个小时寻找和尝试解决方案。
我所拥有的一个示例(它是一个名为“信号”的 xts 对象,并按天索引(此处省略以使示例简单):
open close position
0 0 0
1 0 0
0 0 0
0 0 0
0 1 0
0 0 0
以及我想要发生的事情:
open close position
0 0 0
1 0 1
0 0 1
0 0 1
0 1 1
0 0 0
基本上,当“open”为真时,在“position”重复1s,直到“close”为真。我认为非常简单,但不知何故我无法让它工作。这里有一个我认为可能很接近的例子,但它陷入了无限循环:
for (i in 1:nrow(signals)) {
if (signals[i,"open"]==1) next
while (signals[i,"close"] == 0) {
signals[i,"position"] <- 1 }
}
谢谢你!
编辑 - 我遗漏了一个重要的限定词。有时,“close”中的第一个真实陈述会出现在“open”中的第一个真实陈述之前。但是,既然我在这里写了这个,我想以某种方式“清理”关闭列会更容易,所以在打开列中的第一个 1 点之前没有 1。
但是,如果有人知道如何做这一切,请随时添加其他信息。谢谢!