我有一个数字向量,它包含重复的元素补丁,如:
R> data <- c(1,1,1,2,2,2,3,3,2,2,2,2,2,3,3,1,1,1,1,1)
R> data
[1] 1 1 1 2 2 2 3 3 2 2 2 2 2 3 3 1 1 1 1 1
R>
我需要提取等于特定值的连续元素块...但我只对特定位置的补丁感兴趣。所以,我的输入是:(1)数字向量,(2)期望值,(3)位置。我想返回一个逻辑向量,指示哪些位置满足请求。
如果在该位置数据不等于该值,则返回所有FALSE
。
不是全部F
的可能结果将是:
[1] 1 1 1 2 2 2 3 3 2 2 2 2 2 3 3 1 1 1 1 1
[1] T T T F F F F F F F F F F F F F F F F F
[2] F F F T T T F F F F F F F F F F F F F F
[3] F F F F F F T T F F F F F F F F F F F F
[4] F F F F F F F F T T T T T F F F F F F F
[5] F F F F F F F F F F F F F T T F F F F F
[6] F F F F F F F F F F F F F F F T T T T T
答案 0 :(得分:2)
contiguousequal <- function(data, value, position) {
if(data[position] != value)
return(rep(FALSE, length(data)))
id <- cumsum(c(1, as.numeric(diff(data) != 0)))
id == id[position]
}