2013-07-10 271 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)))' –