我正在hflights上运行一些dplyr函数。
我想知道有多少周末航班飞行超过1000英里,但总滑行时间在15分钟以下?
我认为下面的两组代码应生成相同的结果-有人可以告诉我为什么它们不同吗?
filter(hflights,DayOfWeek==6|DayOfWeek==7 & Distance >1000 & TaxiIn+TaxiOut <15)
A tibble: 2,841 x 21
filter(hflights,DayOfWeek %in% c(6,7) & Distance >1000 & TaxiIn+TaxiOut <15)
A tibble: 155 x 21
答案 0 :(得分:1)
在不使用括号的情况下,示例|
中的or运算符实际上将|
运算符左侧的所有内容与其右侧的所有内容进行比较。因此,第一个表达式DayOfWeek==6|DayOfWeek==7 & Distance >1000 & TaxiIn+TaxiOut <15
产生以下所有结果的输出:
DayOfWeek==6
DayOfWeek==7 & Distance >1000 & TaxiIn+TaxiOut <15
使用%in%
运算符时,实际上是在{1>括号中使用|
运算符:
DayOfWeek %in% c(6,7)
与(DayOfWeek==6 | DayOfWeek==7)
因此,第二个表达式DayOfWeek %in% c(6,7) & Distance >1000 & TaxiIn+TaxiOut <15
产生以下所有结果的输出:
DayOfWeek==6 & Distance >1000 & TaxiIn+TaxiOut <15
DayOfWeek==7 & Distance >1000 & TaxiIn+TaxiOut <15
第一个表达式可以用括号filter(hflights,(DayOfWeek==6 | DayOfWeek==7) & Distance >1000 & TaxiIn+TaxiOut <15)
进行修改,以产生与使用第二个表达式相同的结果。