检测R中的连续重复项

6

在R中,我想要找出数据中是否存在连续的重复值。

A <- c(1,2,3,3,4)

B <- c(1,2,3,4,3)

对于A,我希望获得TRUE,因为有两个3直接相邻。
对于B,我希望获得FALSE,因为3被4隔开了。
谢谢社区!pointingeye

看看 rle 就能找到答案。 - A5C1D2H2I1M1N2O1R2T1
或者你可以尝试 any(c(FALSE,A[-1]==A[-length(A)])) - akrun
3个回答

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

4
尝试使用 rle
any(rle(A)$lengths > 1)
#[1] TRUE
any(rle(B)$lengths > 1)
#[1] FALSE

替代方案({{link1:diff}}):

any(diff(A)==0)
#[1] TRUE
any(diff(B)==0)
#[1] FALSE

不,这有点像平局。所以不需要移除。您也可以提出其他选项,例如我在评论中发布的选项。 - akrun

2
0 %in% diff(A) - TRUE
0 %in% diff(B) - FALSE

只有在至少两个连续相同的数字出现时,差才可能等于0。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接