使用 dplyr::filter 时,`&` 与 `,` 有什么区别?

Wil*_*ong 5 r dplyr

我读过一些 dplyr vignettes和 dplyr::filter示例,我很好奇 和 之间有什么&区别,,我很好奇使用列值的子集行因为结果是相同的,我只是担心可能会犯一些语义错误。下面是直接从示例粘贴的:

\n
    \n
  • 在单个逻辑表达式中按多个条件进行过滤:
  • \n
\n

filter(starwars, hair_color == "none" & eye_color == "black")

\n

filter(starwars, hair_color == "none", eye_color == "black")

\n
# A tibble: 9 \xc3\x97 14\n  name       height  mass hair_color skin_color    eye_color birth_year sex   gender\n  <chr>       <int> <dbl> <chr>      <chr>         <chr>          <dbl> <chr> <chr> \n1 Nien Nunb     160    68 none       grey          black             NA male  mascu\xe2\x80\xa6\n2 Gasgano       122    NA none       white, blue   black             NA male  mascu\xe2\x80\xa6\n3 Kit Fisto     196    87 none       green         black             NA male  mascu\xe2\x80\xa6\n... with more entries and variables ...\n
Run Code Online (Sandbox Code Playgroud)\n
\n

我可以把它们放在一起吗?使用& ,在单个表达式中就像下面这样:

\n

filter(starwars, hair_color == "none" & eye_color == "black", gender == "masculine")

\n

filter(starwars, hair_color == "none", eye_color == "black" & gender == "masculine")

\n
# A tibble: 7 \xc3\x97 14\n  name       height  mass hair_color skin_color  eye_color birth_year sex   gender  \n  <chr>       <int> <dbl> <chr>      <chr>       <chr>          <dbl> <chr> <chr>   \n1 Nien Nunb     160    68 none       grey        black             NA male  masculi\xe2\x80\xa6\n2 Gasgano       122    NA none       white, blue black             NA male  masculi\xe2\x80\xa6\n3 Kit Fisto     196    87 none       green       black             NA male  masculi\xe2\x80\xa6\n... with more entries and variables ...\n
Run Code Online (Sandbox Code Playgroud)\n

因为结果也是一样的,先谢谢了!

\n

bre*_*auv 1

从文档(?dplyr::filter):

如果包含多个表达式,则将它们与&运算符组合起来。

因此,使用,&是相同的。


这个答案来自 @RitchieSacramento 的评论,并在一个月后发布。我不想窃取荣誉,我只是希望这个问题在实际得到解答时不再显示为“未答复”。