2013-07-10 171 views
2
v = c(1,0,1, 1,1,2, 1,2,2, 0,0,1) 

我正在寻找一个功能相同的前一个元素的元素,这将使我:r功能识别

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 

回答

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 
+0

感谢您的这一点(和洪为同样的想法)。我已经证实它的工作原理。 –

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

请注意,您的要求是未定义v[1]。如果你只有数值,那么你也可以使用diff功能

+0

恭喜@HongOoi 10K!这种力量如何感受? :) – Arun

+2

@arun _我可以看到死帖子_ –

3

。如果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 
+1

啊哈,有趣的想法。我怀疑它可能更有效。顺便说一句,它需要'c(FALSE,!as.logical(diff(v)))'获得所有12个条目。或'!as.logical(c(0,diff(v)))' –