我想创建一个在mutate
内部工作的函数。作为一个简单的例子,我可以使它起作用:
library(tidyverse)
# Toy Data
df <- tibble::tribble(
~id, ~first_name, ~gender, ~height,
1, "john", "m", 71,
2, "jane", "f", 64,
3, "sally", "f", 65
)
double_it <- function(df, x) {
x <- enquo(x)
pull(df, !!x) * 2
}
df %>% mutate(height_2 = double_it(., height))
# A tibble: 3 x 5
id first_name gender height height_2
<dbl> <chr> <chr> <dbl> <dbl>
1 1 john m 71 142
2 2 jane f 64 128
3 3 sally f 65 130
但是,我想了解的是:
double_it <- function(x) {
???
}
df1 %>% mutate(height_2 = double_it(height))
# A tibble: 3 x 5
id first_name gender height height_2
<dbl> <chr> <chr> <dbl> <dbl>
1 1 john m 71 142
2 2 jane f 64 128
3 3 sally f 65 130
答案 0 :(得分:1)
您可以使用.data$
作为前缀:
library(tidyverse)
# Toy Data
df1 <- tibble::tribble(
~id, ~first_name, ~gender, ~height,
1, "john", "m", 71,
2, "jane", "f", 64,
3, "sally", "f", 65
)
double_it <- function(x) {
x * 2
}
df1 %>% mutate(height_2 = double_it(.data$height))
#> # A tibble: 3 x 5
#> id first_name gender height height_2
#> <dbl> <chr> <chr> <dbl> <dbl>
#> 1 1 john m 71 142
#> 2 2 jane f 64 128
#> 3 3 sally f 65 130
或直接使用height
:
double_it <- function(x) {
x * 2
}
df1 %>% mutate(height_2 = double_it(height))
#> # A tibble: 3 x 5
#> id first_name gender height height_2
#> <dbl> <chr> <chr> <dbl> <dbl>
#> 1 1 john m 71 142
#> 2 2 jane f 64 128
#> 3 3 sally f 65 130