我有以下向量:
a <- c(TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, NA, FALSE)
Run Code Online (Sandbox Code Playgroud)
我想改变FALSE到TRUE只有n FALSE彼此相邻的最多值.否则,不应更改值.例如,何时n = 2,我想获得:
c(TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, NA, TRUE).
Run Code Online (Sandbox Code Playgroud)
这个问题的最佳解决方案是什么?
rle() 并 inverse.rle() 可以帮助:
a <- c(TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, NA, FALSE)
r <- rle(a)
r$values[r$values==FALSE & r$lengths<=2] <- TRUE
inverse.rle(r)
# > inverse.rle(r)
# [1] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE TRUE NA TRUE
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
126 次 |
| 最近记录: |