当使用dplyr :: filter时,“&”和“,”之间有什么区别?

5
我读了一些关于dplyr的vignettes和dplyr :: filter example,我很好奇在使用列值子集行时,使用&,是否有区别?因为结果是相同的,我只是担心可能会产生一些语义错误。以下是直接从示例中复制的内容:
  • 通过单个逻辑表达式过滤多个条件:

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

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

# A tibble: 9 × 14
  name       height  mass hair_color skin_color    eye_color birth_year sex   gender
  <chr>       <int> <dbl> <chr>      <chr>         <chr>          <dbl> <chr> <chr> 
1 Nien Nunb     160    68 none       grey          black             NA male  mascu…
2 Gasgano       122    NA none       white, blue   black             NA male  mascu…
3 Kit Fisto     196    87 none       green         black             NA male  mascu…
... with more entries and variables ...

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

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

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

# A tibble: 7 × 14
  name       height  mass hair_color skin_color  eye_color birth_year sex   gender  
  <chr>       <int> <dbl> <chr>      <chr>       <chr>          <dbl> <chr> <chr>   
1 Nien Nunb     160    68 none       grey        black             NA male  masculi…
2 Gasgano       122    NA none       white, blue black             NA male  masculi…
3 Kit Fisto     196    87 none       green       black             NA male  masculi…
... with more entries and variables ...

因为结果也是相同的,先行致谢!

7
它们是完全相同的。根据文档:“如果包含多个表达式,则使用 & 运算符组合它们。” - Ritchie Sacramento
1
“?filter”表示:“如果包含多个表达式,则使用‘&’运算符组合它们。” 两种形式是相同的。 - Joe
1
我认为用逗号分隔的表达式在内部通过布尔运算符 & 连接,因此逗号和 & 是相同的。 - TimTeaFan
1个回答

1
从文档中可以看到(?dplyr::filter):
如果有多个表达式,则使用 & 运算符组合它们。
因此,使用 ,& 是相同的。
这个答案来自 @RitchieSacramento 的评论,并在一个月后发布。我不想窃取功劳,只是希望这个问题不再出现为“未回答”,因为它实际上已经被回答了。

谢谢@bretauv,这是我在SO上的第一个问题,我找不到将评论标记为答案的方法。感谢大家的评论和回答! - Will Hong
1
@WillHong 这是因为你无法将评论标记为答案,所以这很正常。通常情况下,你可以要求写评论的人将其作为答案,以便你进行验证。 - bretauv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接