我正在尝试使用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
答案 0 :(得分:2)
答案 如果您真的想要:
cyl<-4
mtcars %>%
filter(cyl==(!!cyl))
良好做法说明 您需要使用其他变量名。否则,这就是您正在做的事情:R首先在数据集中寻找cyl。
mtcars %>%
filter(cyl==cyl)
这没有改变。 但是,正如您所指出的;这可行:
mycyl<-4
mtcars %>%
filter(cyl==mycyl)