【发布时间】:2022-01-18 03:38:00
【问题描述】:
鉴于这种情况
id = "a"
df <- tibble(
id = c("a", "b", "c"),
value = c(1, 2, 3)
)
df %>% dplyr::filter(id == id)
我希望最后一行与df %>% dplyr::filter(id == "a") 具有相同的输出,但它仍然将id 称为df 列而不是变量。我可以强制它查找变量id吗?
【问题讨论】:
鉴于这种情况
id = "a"
df <- tibble(
id = c("a", "b", "c"),
value = c(1, 2, 3)
)
df %>% dplyr::filter(id == id)
我希望最后一行与df %>% dplyr::filter(id == "a") 具有相同的输出,但它仍然将id 称为df 列而不是变量。我可以强制它查找变量id吗?
【问题讨论】:
这可以通过rlang 中的.env 代词来实现:
参见例如这个blog post。
library(dplyr)
id = "a"
df <- tibble(
id = c("a", "b", "c"),
value = c(1, 2, 3)
)
df %>%
dplyr::filter(id == .env$id)
#> # A tibble: 1 × 2
#> id value
#> <chr> <dbl>
#> 1 a 1
【讨论】: