我正在尝试在脚本的开头设置要运行的函数以及要包含的参数的详细信息,以便以后调用该函数。我在指定要输入到函数中的参数时遇到麻烦。我有一个固定的对象
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
并期望函数运行。是否有其他方法可以指定函数的参数?
稍后,当您提供更多上下文时,我将编辑我的答案,但是现在下面的代码显示了如何使用...
传递参数。
> 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
[如果要计算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