dplyr:data.frame中两列相等的筛选器
在base R中,可以很容易地筛选到两列相等的行,如下所示: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来
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)