A <- c(1,2,3,3,4)
B <- c(1,2,3,4,3)
对于A,我想得到TRUE,因为有两个3s直接一个接一个。
对于B,我想得到FALSE,因为3s被4分开。
谢谢社区! pointingeye
答案 0 :(得分:6)
您可以使用rle
:
> rle(A)
Run Length Encoding
lengths: int [1:4] 1 1 2 1
values : num [1:4] 1 2 3 4
> any(rle(A)$lengths > 1)
[1] TRUE
> any(rle(B)$lengths > 1)
[1] FALSE
答案 1 :(得分:4)
尝试rle
:
any(rle(A)$lengths > 1)
#[1] TRUE
any(rle(B)$lengths > 1)
#[1] FALSE
替代解决方案(diff
):
any(diff(A)==0)
#[1] TRUE
any(diff(B)==0)
#[1] FALSE
答案 2 :(得分:2)
0 %in% diff(A) - TRUE
0 %in% diff(B) - FALSE
仅在(至少)两个连续相同的数字差异的情况下才能等于0.