r - 省略号输入的字符向量
问题描述
我有以下函数,它接受不带引号的输入并返回输入对象的字符向量。
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"
问题
- 如何获得
my_wrapper()
与返回相同的输出my_function()
? - 奖励:是否有更简化的方法来实现结果
my_function()
?
我希望使用该解决方案rlang
,但不介意另外查看基本解决方案。
解决方案
你的包装应该看起来像
my_wrapper <- function(v_chr) {
x <- rlang::syms(v_chr)
rlang::eval_tidy(my_function(!!!x))
}
您需要使用 bang-bang-bang 运算符将这些符号注入到调用中,然后使用 对其进行评估,eval_tidy
因为“正常”R 函数无法识别!!!
.
推荐阅读
- google-chrome-devtools - Chrome / Safari Inspector 无法更改 onClick 参数
- ios - 实现从 SwiftUI 到 UIViews 的填充
- c# - 如何访问对象的根成员
- java - 如何将Java中的方法从A类继承到C类
- android - 如何在 ffmpeg 命令的时间戳日期中添加日期后缀 [st,nd,rd,th]?
- python - Python phone number string validation
- blogger - 添加自动 AdSense 广告后无法点击的博主主题
- spring - Tomcat [9.0.26] - 调用安全服务 - TrustStore 与 KeyStore 配置差异和问题
- php - 数据更新与否,显示抱歉未插入。请检查一下。谢谢你
- c# - 如何减少 C# 中不同类型的类似函数的重复代码