2
v = c(1,0,1, 1,1,2, 1,2,2, 0,0,1)

我正在寻找一个能给我的功能:

c(F,F,F, T,T,F, F,F,T, F,T,F)

即如果 v[ix] 等于元素 v[ix-1],则在元素 ix 处为真。

顺便说一句,duplicated(v)这不是我想要的,因为它与所有之前的行相比,并给了我:

[1] FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
4

3 回答 3

4
v[-1] == v[-length(v)]

请注意,您的要求未定义v[1]

于 2013-07-10T05:52:32.573 回答
3

如果你只有数值,那么你也可以使用 diff 函数。如果 0 -> 相等,否则不相等

 v = c(1,0,1, 1,1,2, 1,2,2, 0,0,1)
 diff(v)
 ## [1] -1  1  0  0  1 -1  1  0 -2  0  1
 !as.logical(diff(v))
 ## [1] FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE
于 2013-07-10T06:38:48.727 回答
2

像这样的东西应该这样做

v <- c(1,0,1, 1,1,2, 1,2,2, 0,0,1)
c(FALSE, v[-1] == v[-length(v)])
##  [1] FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE
## [11]  TRUE FALSE
于 2013-07-10T05:52:41.060 回答