我是否錯過了這樣做的更好方法 - 或者至少允許改變窗口大小的方法?尋找值是否存在於向量r的前n個值中
說我有一個向量,訴
v <- c(T,T,F,F,F,F,F,T,T,T,T,F,F,F,F,T,F,F,F,F,F,F,T,F)
我希望這個載體,使得FALSEs被翻到TRUEs如果真出現以前的3元內轉換。例如位置3,4,5處的F也會切換到T,因爲在位置2處有T.位置6處的F不會。
解決方案,如果只關心3個窗口:
vlag1 <- lag(v)
vlag2 <- lag(vlag1)
vlag3 <- lag(vlag2)
ifelse(v==T|vlag1==T|vlag2==T|vlag3==T,T,F)
得到期望的結果:
TRUE TRUE TRUE TRUE TRUE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE FALSE FALSE FALSE TRUE TRUE
但是,如果我們想改變窗口例如4或5 - 有更好的方法嗎?
的OP的輸出'如果你要堅持立足R. – joran
@joran embed'可能是有用的一個選擇 - 是的謝謝,基地R是首選 – jalapic
@亨利克 - 感謝這是一個很好的捕獲。上面的'ifelse'似乎給出了我給出的預期結果,就像'zoo'和'base'解決方案一樣。在這種情況下'data.table'解決方案不起作用。我非常感謝你注意到這一點。 – jalapic