R中向量中相邻的相同元素

时间:2014-03-16 01:32:45

标签: r subset

R中是否有一种有效的方法来识别相邻的相同元素?

假设我有这个载体:

(Vx)
1 2 2 1 3 3 3 1 2 2 3 3 0

我想得到:

0 1 1 0 1 1 1 0 1 1 1 1 0 

有没有干净的方法呢?我试图避免循环或繁琐的功能,但到目前为止我没有运气。

感谢。

2 个答案:

答案 0 :(得分:2)

vec <- c(1, 2, 2, 1, 3, 3, 3, 1, 2, 2, 3, 3, 0)

l <-  rle(vec)$lengths

rep(ifelse(l == 1, 0, 1), times = l)

# [1] 0 1 1 0 1 1 1 0 1 1 1 1 0

答案 1 :(得分:1)

尝试rleinverse.rle,如下所示:

r <- rle(vx)
r$values <- (r$lengths > 1) + 0
inverse.rle(r)

,并提供:

[1] 0 1 1 0 1 1 1 0 1 1 1 1 0