首页 > 解决方案 > 省略号输入的字符向量

问题描述

我有以下函数,它接受不带引号的输入并返回输入对象的字符向量。

my_function <- function(...) {

  v_chr <- purrr::map_chr(rlang::enexprs(...), rlang::as_name)
  v_chr

}

my_function(apple, orange)
"apple" "orange" 

我正在尝试围绕它构建一个接受字符向量输入的包装器。这不起作用。

my_wrapper <- function(v_chr) {

  x <- rlang::syms(v_chr) 
  my_function(x)

}

v_chr <- c("apple", "orange")
my_wrapper(v_chr)
"x"

问题

  1. 如何获得my_wrapper()与返回相同的输出my_function()
  2. 奖励:是否有更简化的方法来实现结果my_function()

我希望使用该解决方案rlang,但不介意另外查看基本解决方案。

标签: rrlang

解决方案


你的包装应该看起来像

my_wrapper <- function(v_chr) {      
  x <- rlang::syms(v_chr) 
  rlang::eval_tidy(my_function(!!!x))      
}

您需要使用 bang-bang-bang 运算符将这些符号注入到调用中,然后使用 对其进行评估,eval_tidy因为“正常”R 函数无法识别!!!.


推荐阅读