【发布时间】:2021-02-27 06:00:45
【问题描述】:
为什么前三个函数(f2、f3、f4)只返回 y 中 id = 1 的行,而 f5 返回 y 的所有行?
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
y <- tibble(id = c(1, 2))
f1 <- function(y, id) {
y %>% filter(.data$id == {{id}})
}
f2 <- function(id) {
f1(y, !!id)
}
f3 <- function(id) {
f1(y, {{id}})
}
f4 <- function(x) {
f1(y, x)
}
f5 <- function(id) {
f1(y, id)
}
f2(1)
#> # A tibble: 1 x 1
#> id
#> <dbl>
#> 1 1
f3(1)
#> # A tibble: 1 x 1
#> id
#> <dbl>
#> 1 1
f4(1)
#> # A tibble: 1 x 1
#> id
#> <dbl>
#> 1 1
f5(1)
#> # A tibble: 2 x 1
#> id
#> <dbl>
#> 1 1
#> 2 2
由reprex package (v0.3.0) 于 2020 年 11 月 15 日创建
【问题讨论】:
标签: r dplyr functional-programming nested