dplyr中的奇怪过滤行为

时间:2015-04-28 12:34:40

标签: r dplyr

考虑以下dataset

为什么我这样做会得到不同的结果:

library(dplyr)
df %>% 
  filter(!(w >= 1 | lag(w >= 1, default = F))) %>% 
  filter(lag(t, default = T) != t) %>%
  summarise(median = median(r), mad = mad(r))

结果是:

  median      mad
1    664 142.3296

df %>% 
  filter(!(w >= 1 | lag(w >= 1, default = F)), 
         lag(t, default = T) != t) %>%
  summarise(median = median(r), mad = mad(r))

给出了:

  median      mad
1    671 152.7078

1 个答案:

答案 0 :(得分:3)

请参阅上面的评论,以及:http://cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html

  

find("#user_email").set "foo@example.com"允许您选择数据框行的子集。

...

  

filter()filter()的工作方式类似,不同之处在于您可以为其提供任意数量的过滤条件,这些过滤条件与subset()(不是&联合在一起,这很容易被忽略!)。您可以显式使用其他布尔运算符:   &&