4

我有一个向量,如下所示

a<- c(1,1,1,2,3,2,2,2,2,1,0,0,0,0,2,3,4,4,1,1)

在这里我们可以看到有很多重复的元素,即。它们是重复的。我想要一个代码,它可以替换除第一个元素之外的所有连续且重复的元素 0。我需要的结果是

a<- c(1,0,0,2,3,2,0,0,0,1,0,0,0,0,2,3,4,0,1,0)

我试过了

unique(a)
       #which gives
[1] 1 2 3 0 4
4

2 回答 2

5
replace(a, duplicated(c(0, cumsum(abs(diff(a))))), 0)
# [1] 1 0 0 2 3 2 0 0 0 1 0 0 0 0 2 3 4 0 1 0
于 2013-08-08T08:37:36.077 回答
5

您可以创建一个滞后系列并进行比较

> a
 [1] 1 1 1 2 3 2 2 2 2 1 0 0 0 0 2 3 4 4 1 1
> ifelse(a == c(a[1]-1,a[(1:length(a)-1)]) , 0 , a)
 [1] 1 0 0 2 3 2 0 0 0 1 0 0 0 0 2 3 4 0 1 0
于 2013-08-08T08:31:15.970 回答