r - 给定条件下的屏幕变量
问题描述
我正在尝试使用 dplyr::filter 在特定条件下筛选变量。使用以下方法得到过滤结果是没有问题的:
mtcars %>% filter(cyl == 4)
或者
var <- 4
mtcars %>% filter(cyl == var)
但是,如果我在过滤器函数之外定义给定条件(如果我使用与变量相同的名称),则无法生成相同的结果。例如:
cyl <- 4
mtcars %>% filter(cyl %in% cyl) # not work
mtcars %>% filter(cyl == cyl) # not work
解决方案
回答 如果你真的想那么:
cyl<-4
mtcars %>%
filter(cyl==(!!cyl))
良好实践说明 您需要使用不同的变量名。否则,这就是你正在做的事情:R 首先在数据集中查找 cyl 。
mtcars %>%
filter(cyl==cyl)
这没有任何改变。但是,正如您所指出的;这有效:
mycyl<-4
mtcars %>%
filter(cyl==mycyl)
推荐阅读
- typescript - TypeError:尝试为特定用户进行更改时尝试分配给只读属性
- excel - 如何匹配 VBA 正则表达式中的所有标点符号(例如其他语言中的 '\p{P}')
- angular - Angular 2 - 将字符串与其他字符串一起翻译为参数
- java - 使用最后创建的文件
- reactjs - 运行流程:安装给出错误
- mysql - 如何删除所有类型为 y 的行,这些行也包含同一个表中类型为 x 的条目?
- symfony - KnpSnappyBundle - wkhtmltopdf:加载 CSS/图像但不加载脚本
- angularjs - AngularJS表单值未显示
- oracle - oracle 包中每个函数/过程调用的所有函数/过程的列表
- django - DJango api 发送刷新和访问令牌