似乎是xor
邏輯運算的任務。該xor
操作給出:
# x y xor
# 1 TRUE TRUE FALSE
# 2 TRUE FALSE TRUE
# 3 FALSE TRUE TRUE
# 4 FALSE FALSE FALSE
利用這一點,如果我們採取df$c
,然後用c(NA, head(df$c, -1))
xor
,後者是df$c
移位版本,那麼我們得到:
# x y xor
# 1 TRUE NA NA
# 2 TRUE TRUE FALSE
# 3 FALSE TRUE TRUE
# 4 FALSE FALSE FALSE
# 5 FALSE FALSE FALSE
# 6 TRUE FALSE TRUE
# 7 TRUE TRUE FALSE
# 8 TRUE TRUE FALSE
在這裏你想要這些條目是TRUE
。所以,
df[with(df, xor(c, c(NA, head(c, -1))) %in% TRUE), ]
# a b c
# 3 t3 8 FALSE
# 6 t6 5 TRUE
更妙的是,我們可以消除NA
使用,因此與%in%
:
df[with(df, xor(c, c(c[1], head(c, -1)))), ]
# a b c
# 3 t3 8 FALSE
# 6 t6 5 TRUE
您好,因爲你似乎相當新來的話,我建議你閱讀[** SO約**](http://stackoverflow.com/about),也是[** **常見問題解答(http://stackoverflow.com/faq )關於SO如何解答問題並接受答案秒。 – Arun 2013-03-26 20:32:37
什麼阿倫想說的是,StackOverflow的是由** **很多更有價值的所有人,如果當您收到解決您的問題的答案,您可以通過單擊小對勾接受它。您完全不承擔**的義務,但如果答案確實能夠解決您的問題,那麼這是「回饋」網站的好方法。 – joran 2013-03-26 20:51:37
謝謝Arun和Jordon。將去看看,並確保我已經做到了這一點。謝謝。我曾經閱讀過,但往往事情並沒有停留在老人的大腦中。我會盡力注意細節,並欣賞評論。再次感謝你。 – 2013-03-27 17:12:39