library(tidyverse)
my_plot <- function(data, x,y){
ggplot(data,
aes(x = {{ x }},
y = {{ y }})) +
geom_point()
}
library(palmerpenguins)
my_plot(penguins,
x = bill_length_mm,
y = flipper_length_mm)
#> Warning: Removed 2 rows containing missing values (geom_point).
my_mutate <- function(data, x, y){
data %>%
mutate(z = {{ x }} + {{ y }})
}
my_mutate(penguins,
x = bill_length_mm,
y = flipper_length_mm)
#> # A tibble: 344 x 9
#> species island bill_length_mm bill_depth_mm flipper_length_… body_mass_g
#> <fct> <fct> <dbl> <dbl> <int> <int>
#> 1 Adelie Torge… 39.1 18.7 181 3750
#> 2 Adelie Torge… 39.5 17.4 186 3800
#> 3 Adelie Torge… 40.3 18 195 3250
#> 4 Adelie Torge… NA NA NA NA
#> 5 Adelie Torge… 36.7 19.3 193 3450
#> 6 Adelie Torge… 39.3 20.6 190 3650
#> 7 Adelie Torge… 38.9 17.8 181 3625
#> 8 Adelie Torge… 39.2 19.6 195 4675
#> 9 Adelie Torge… 34.1 18.1 193 3475
#> 10 Adelie Torge… 42 20.2 190 4250
#> # … with 334 more rows, and 3 more variables: sex <fct>, year <int>, z <dbl>
library(rlang)
#>
#> Attaching package: 'rlang'
#> The following objects are masked from 'package:purrr':
#>
#> %@%, as_function, flatten, flatten_chr, flatten_dbl, flatten_int,
#> flatten_lgl, flatten_raw, invoke, list_along, modify, prepend,
#> splice
my_paste_vars <- function(data, x){
message("capture the symbol")
print(rlang::quo(x))
message("capture the environment and the symbol")
print(rlang::enquo(x))
message("convert quosure into string")
print(rlang::as_label(rlang::enquo(x)))
my_var <- paste0(rlang::as_label(rlang::enquo(x)),
"_2")
data %>%
mutate(!!my_var := {{x}}^2)
}
my_paste_vars(penguins, bill_length_mm)
#> capture the symbol
#> <quosure>
#> expr: ^x
#> env: 0x7faffdf568b0
#> capture the environment and the symbol
#> <quosure>
#> expr: ^bill_length_mm
#> env: global
#> convert quosure into string
#> [1] "bill_length_mm"
#> # A tibble: 344 x 9
#> species island bill_length_mm bill_depth_mm flipper_length_… body_mass_g
#> <fct> <fct> <dbl> <dbl> <int> <int>
#> 1 Adelie Torge… 39.1 18.7 181 3750
#> 2 Adelie Torge… 39.5 17.4 186 3800
#> 3 Adelie Torge… 40.3 18 195 3250
#> 4 Adelie Torge… NA NA NA NA
#> 5 Adelie Torge… 36.7 19.3 193 3450
#> 6 Adelie Torge… 39.3 20.6 190 3650
#> 7 Adelie Torge… 38.9 17.8 181 3625
#> 8 Adelie Torge… 39.2 19.6 195 4675
#> 9 Adelie Torge… 34.1 18.1 193 3475
#> 10 Adelie Torge… 42 20.2 190 4250
#> # … with 334 more rows, and 3 more variables: sex <fct>, year <int>,
#> # bill_length_mm_2 <dbl>
my_select_bang <- function(data, x){
en_x <- rlang::enquo(x)
data %>% dplyr::select(!!en_x)
}
my_select_bang(penguins, bill_length_mm)
#> # A tibble: 344 x 1
#> bill_length_mm
#> <dbl>
#> 1 39.1
#> 2 39.5
#> 3 40.3
#> 4 NA
#> 5 36.7
#> 6 39.3
#> 7 38.9
#> 8 39.2
#> 9 34.1
#> 10 42
#> # … with 334 more rows
my_select_cc <- function(data, x){
data %>% select( {{ x }})
}
my_select_bang(penguins, bill_length_mm)
#> # A tibble: 344 x 1
#> bill_length_mm
#> <dbl>
#> 1 39.1
#> 2 39.5
#> 3 40.3
#> 4 NA
#> 5 36.7
#> 6 39.3
#> 7 38.9
#> 8 39.2
#> 9 34.1
#> 10 42
#> # … with 334 more rows
my_select_cc(penguins, bill_length_mm)
#> # A tibble: 344 x 1
#> bill_length_mm
#> <dbl>
#> 1 39.1
#> 2 39.5
#> 3 40.3
#> 4 NA
#> 5 36.7
#> 6 39.3
#> 7 38.9
#> 8 39.2
#> 9 34.1
#> 10 42
#> # … with 334 more rows
my_paste_vars(penguins, bill_length_mm)
#> capture the symbol
#> <quosure>
#> expr: ^x
#> env: 0x7faffb70ae18
#> capture the environment and the symbol
#> <quosure>
#> expr: ^bill_length_mm
#> env: global
#> convert quosure into string
#> [1] "bill_length_mm"
#> # A tibble: 344 x 9
#> species island bill_length_mm bill_depth_mm flipper_length_… body_mass_g
#> <fct> <fct> <dbl> <dbl> <int> <int>
#> 1 Adelie Torge… 39.1 18.7 181 3750
#> 2 Adelie Torge… 39.5 17.4 186 3800
#> 3 Adelie Torge… 40.3 18 195 3250
#> 4 Adelie Torge… NA NA NA NA
#> 5 Adelie Torge… 36.7 19.3 193 3450
#> 6 Adelie Torge… 39.3 20.6 190 3650
#> 7 Adelie Torge… 38.9 17.8 181 3625
#> 8 Adelie Torge… 39.2 19.6 195 4675
#> 9 Adelie Torge… 34.1 18.1 193 3475
#> 10 Adelie Torge… 42 20.2 190 4250
#> # … with 334 more rows, and 3 more variables: sex <fct>, year <int>,
#> # bill_length_mm_2 <dbl>
Created on 2020-10-02 by the reprex package (v0.3.0)