从字符串中指定函数参数

问题描述 投票:0回答:2

我正在尝试在脚本的开头设置要运行的函数以及要包含的参数的详细信息,以便以后调用该函数。我在指定要输入到函数中的参数时遇到麻烦。我有一个固定的对象

v <- c(1,2,3,5,6,7,8,9,NA)

我想指定我将使用哪个度量函数以及任何相关参数。

示例1:

chosenFunction <- mean
chosenArguments <- "trim = 0.1, na.rm = T"

示例2:

chosenFunction <- median
chosenArguments <- "na.rm = F"

然后我希望能够运行此指定功能

chosenFunction(v, chosenArguments)

[不幸的是,我不能只输入字符串chosenArguments并期望函数运行。是否有其他方法可以指定函数的参数?

r function
2个回答
0
投票

稍后,当您提供更多上下文时,我将编辑我的答案,但是现在下面的代码显示了如何使用...传递参数。

> get_summary <- function(x, chosenFunction, ...) chosenFunction(x, ...)
> v <- 1:100
> get_summary(v, mean, na.rm = TRUE, trim = 1)
# [1] 50.5
> get_summary(v, median, na.rm = TRUE)
# [1] 50.5

通过执行...,您不必指定所有参数

> get_summary(mean, na.rm = TRUE)
# [1] 50.5

0
投票

[如果要计算mean,我们用]进行>

mean(v, na.rm = TRUE, time = 0.1)
#[1] 5.125

另一种方法是使用do.call

do.call(mean, list(v, na.rm = TRUE, trim = 0.1))
#[1] 5.125

我们可以利用这一事实为chosenArguments创建一个命名列表,并在do.call中使用它

chosenFunction <- mean
chosenArguments <- list(na.rm = TRUE, trim = 0.1)
do.call(chosenFunction, c(list(v), chosenArguments))
#[1] 5.125
© www.soinside.com 2019 - 2024. All rights reserved.