将 tidyeval 参数转换为字符串
Converting tidyeval arguments to string
我在 R 中有一个简单的函数 ...
使用 tidyeval。是否可以将这些更改为字符串?
simple_paste <- function(...){
my_vars <- enquos(...)
paste(..., sep = "_x_")
}
simple_paste(hello, world)
作为输出,我想得到 "hello_x_world"
。我也可以考虑使用 glue
函数或 str_c
而不是 paste
,尽管我不确定那样会更好。
将quosure转换为字符然后paste
simple_paste <- function(...) {
purrr::map_chr(enquos(...), rlang::as_label) %>%
paste(collapse="_x_")
}
simple_paste(hello, world)
#[1] "hello_x_world"
或者另一种选择是eval
计算一个表达式
simple_paste <- function(...) eval(expr(paste(!!! enquos(...), sep="_x_")))[-1]
simple_paste(hello, world)
#[1] "hello_x_world"
如果我们最后需要 .csv
simple_paste <- function(...) eval(expr(paste0(paste(!!! enquos(...), sep="_x_"), ".csv")))[-1]
simple_paste(hello, world)
#[1] "hello_x_world.csv"
我在 R 中有一个简单的函数 ...
使用 tidyeval。是否可以将这些更改为字符串?
simple_paste <- function(...){
my_vars <- enquos(...)
paste(..., sep = "_x_")
}
simple_paste(hello, world)
作为输出,我想得到 "hello_x_world"
。我也可以考虑使用 glue
函数或 str_c
而不是 paste
,尽管我不确定那样会更好。
将quosure转换为字符然后paste
simple_paste <- function(...) {
purrr::map_chr(enquos(...), rlang::as_label) %>%
paste(collapse="_x_")
}
simple_paste(hello, world)
#[1] "hello_x_world"
或者另一种选择是eval
计算一个表达式
simple_paste <- function(...) eval(expr(paste(!!! enquos(...), sep="_x_")))[-1]
simple_paste(hello, world)
#[1] "hello_x_world"
如果我们最后需要 .csv
simple_paste <- function(...) eval(expr(paste0(paste(!!! enquos(...), sep="_x_"), ".csv")))[-1]
simple_paste(hello, world)
#[1] "hello_x_world.csv"