dplyr:data.frame中两列相等的筛选器

dplyr:data.frame中两列相等的筛选器,r,dplyr,R,Dplyr,在base R中,可以很容易地筛选到两列相等的行,如下所示: mtcars[mtcars$cyl==mtcars$carb,] 使用dplyr的filter可以轻松完成此操作 mtcars %>% filter(cyl==carb) 但是,如果我使用这段代码编写函数,我希望使用过滤器,但这段代码不起作用 mtcars %>% filter_("cyl"=="carb") 因为在这种情况下,它认为“carb”是一个要测试的值,而不是一个变量 我的问题是如何使用filter\uu来

在base R中,可以很容易地筛选到两列相等的行,如下所示:

mtcars[mtcars$cyl==mtcars$carb,]
使用
dplyr
filter
可以轻松完成此操作

mtcars %>% filter(cyl==carb)
但是,如果我使用这段代码编写函数,我希望使用
过滤器
,但这段代码不起作用

mtcars %>% filter_("cyl"=="carb")
因为在这种情况下,它认为“carb”是一个要测试的值,而不是一个变量

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

这方面有更多内容

最好使用公式,因为公式可以同时捕获 要计算的表达式,以及该表达式应处于的环境 评价的。如果表达式是以下各项的混合物,则这一点很重要 数据框中的变量和本地环境中的对象

或者:

有三种方法可以引用dplyr理解的输入: 使用公式,
~平均值(mpg)
。使用
quote()
quote(平均值(mpg))
。作为字符串:
“平均值(mpg)”


把整件事用引号引起来:

mtcars %>% filter_("cyl==carb")
或者,正如埃菲尔已经建议的那样,这也会起作用:

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

我认为这一点是为了帮助使用函数
f%filter_u0(粘贴0(col1,“=”,col2))
@pierrelaffortune right,或
粘贴(col1,col2,sep=“=”)
mtcars %>% filter_(~cyl==carb)