首页 > 解决方案 > 给定条件下的屏幕变量

问题描述

我正在尝试使用 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

标签: rdplyr

解决方案


回答 如果你真的想那么:

cyl<-4
mtcars %>% 
  filter(cyl==(!!cyl))

良好实践说明 您需要使用不同的变量名。否则,这就是你正在做的事情:R 首先在数据集中查找 cyl 。

mtcars %>% 
  filter(cyl==cyl)

这没有任何改变。但是,正如您所指出的;这有效:

    mycyl<-4
   mtcars %>% 
      filter(cyl==mycyl)

推荐阅读