r - 将不同函数的参数传递给 R 函数
问题描述
我有一个“主”函数foo
,我需要从中调用另外两个函数fun1
和fun2
. 这些中的每一个都有我想从外部设置的单独的参数集。
library(tidyverse)
#> Registered S3 methods overwritten by 'ggplot2':
#> method from
#> [.quosures rlang
#> c.quosures rlang
#> print.quosures rlang
fun1 <- function(a, c) {
print(glue::glue("a is {a}"))
print(glue::glue("c is {c}"))
}
fun2 <- function(e, g) {
print(glue::glue("e is {e}"))
print(glue::glue("g is {g}"))
}
foo <- function(something, additional_args) {
print(glue::glue("Called with {something}"))
# I know I can do this, but I don't want to explicitly specify a, c, e and g here!)
fun1(additional_args$fun1_args$a, additional_args$fun1_args$c)
fun2(additional_args$fun2_args$e, additional_args$fun2_args$g)
}
foo("something", additional_args = list(
fun1_args = list(a = "b", c = "d"),
fun2_args = list(e = "f", g = "h")
))
#> Called with something
#> a is b
#> b is d
#> c is f
#> d is h
由reprex 包(v0.3.0)于 2019 年 7 月 17 日创建
显然,我不得不重复里面的参数名称并不是很好foo
。并且函数fun1
和fun2
可能需要更多参数,或者不是全部,或者有一些默认值。
我认为我没有完全掌握准报价。我通读了文档,但没有任何内容适用。我没有...
在任何地方使用,因为我不想混淆 functionfun1
和fun2
.
如何替换这些奇怪的调用,在这些调用中我明确指定了参数,以便它们只转发参数?
fun1(additional_args$fun1_args$a, additional_args$fun1_args$c)
fun2(additional_args$fun2_args$e, additional_args$fun2_args$g)
我努力了
fun1_args = enquos(additional_args$fun1_args)
fun1(!!! fun1_args)
但它说:
错误:要捕获的输入必须是参数名称
我也试过fun1(!!!additional_args$fun1_args)
,但它说:
!additional_args$fun1_args 中的错误:参数类型无效
解决方案
推荐阅读
- python - 无法使用 selenium、beautiufulsoup 和 python 正确抓取图像 url
- aws-lambda - 参数验证错误 Lambda 函数
- asp.net - 阻止 ASP.NET Core cookie-authentication 接受为不同主机名签名的 cookie
- aerospike - Aerospike python 客户端:只返回 bins 数据(没有关键细节和元数据)
- angular - 是否存在不需要初始值且能够提供当前值的 BehaviorSubject 等效项?
- c# - 如何在 LINQ - SQL 中选择 Null
- r - 用 c() 和 as.vector 创建向量有什么区别?
- python - 如何创建一个 numpy 张量
- c - 如何在 C 中打印 u16 数组?
- c++ - 为什么我收到此错误以及如何解决?