似乎是xor
逻辑运算的任务。该xor
操作给出:
# x y xor
# 1 TRUE TRUE FALSE
# 2 TRUE FALSE TRUE
# 3 FALSE TRUE TRUE
# 4 FALSE FALSE FALSE
使用这个,如果我们取df$c
然后xor
with c(NA, head(df$c, -1))
,后者是 的移位版本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