在基数R中,可以轻松过滤到两列等于的行:
mtcars[mtcars$cyl==mtcars$carb,]
使用dplyr
filter
这可以轻松完成
mtcars %>% filter(cyl==carb)
但如果我使用此代码编写函数,我会想使用filter_
,但此代码不起作用
mtcars %>% filter_("cyl"=="carb")
因为在这种情况下,它认为“碳水化合物”是要测试的值而不是变量。
我的问题是如何使用filter_
来比较data.frame中的两个变量?
答案 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))
。