dplyr:过滤data.frame中两列相等的过滤器

时间:2016-03-21 19:11:37

标签: r dplyr

在基数R中,可以轻松过滤到两列等于的行:

mtcars[mtcars$cyl==mtcars$carb,]

使用dplyr filter这可以轻松完成

mtcars %>% filter(cyl==carb)

但如果我使用此代码编写函数,我会想使用filter_,但此代码不起作用

mtcars %>% filter_("cyl"=="carb")

因为在这种情况下,它认为“碳水化合物”是要测试的值而不是变量。

我的问题是如何使用filter_来比较data.frame中的两个变量?

2 个答案:

答案 0 :(得分:5)

将整个内容放在引号中:

mtcars %>% filter_("cyl==carb")

或者,正如effel已经建议的那样,这也会起作用:

mtcars %>% filter_(~cyl==carb)

答案 1 :(得分:4)

here还有更多内容。

  

最好使用公式,因为公式可以捕获两者   要评估的表达式,以及它应该成为的环境   评估。如果表达式是混合的,这很重要   数据框中的变量和本地环境中的对象

seq 01 35 | parallel java -javaagent:build/libs/pddl4j-3.0.21-SNAPSHOT.jar 
-server -Xms2048m -Xmx2048m fr.uga.pddl4j.planners.hsp.HSP -o pddl/blocksworld/
domain.pddl -f pddl/blocksworld/p{}.pddl -i 8 '>>' pddl{}.txt 

可替换地:

  

引用dplyr理解的输入有三种方法:   使用公式library(dplyr) airquality %>% filter_(~Month == Day) airquality %>% filter_(~Month == Day) # Ozone Solar.R Wind Temp Month Day # 1 NA NA 14.3 56 5 5 # 2 NA 264 14.3 79 6 6 # 3 77 276 5.1 88 7 7 # 4 89 229 10.3 90 8 8 # 5 21 230 10.9 75 9 9 。使用~ mean(mpg)quote()。作为字符串:quote(mean(mpg))