在 dplyr 过滤器中引用同名的列和变量

Lju*_*mov 6 r dplyr

鉴于这种情况

id = "a"

df <- tibble(
  id = c("a", "b", "c"),
  value = c(1, 2, 3)
)

df %>% dplyr::filter(id == id)
Run Code Online (Sandbox Code Playgroud)

我期望最后一行具有相同的输出,df %>% dplyr::filter(id == "a")但它仍然引用id为 df 列而不是变量。我可以强制它寻找变量id吗?

ste*_*fan 7

.env这可以通过代词来实现rlang

\n

例如,请参阅这篇博文

\n
library(dplyr)\n\nid = "a"\n\ndf <- tibble(\n  id = c("a", "b", "c"),\n  value = c(1, 2, 3)\n)\n\ndf %>% \n  dplyr::filter(id == .env$id)\n#> # A tibble: 1 \xc3\x97 2\n#>   id    value\n#>   <chr> <dbl>\n#> 1 a         1\n
Run Code Online (Sandbox Code Playgroud)\n