R:使用用户输入将函数和参数作为参数传递给高阶函数
我不确定这是否可行(至少我正试图这样做),但我真的希望如此。我在R中开发了一个相当复杂的测试环境,如果我可以将函数及其相关参数作为参数传递给高阶函数,这将非常有帮助。我可以在不要求用户输入的情况下轻松完成这项工作,但readline()会生成字符串这一事实让我的工作变得有点棘手。这是一个简化版本(请注意,我假设参数输入为一个数值,但实际上,我在实际代码中对数据类型进行错误检查。这只是简化以了解要点): 这很接近,因为它确实在全局环境中为这个_参数赋值12,但我真的希望返回R:使用用户输入将函数和参数作为参数传递给高阶函数,r,functional-programming,higher-order-functions,R,Functional Programming,Higher Order Functions,我不确定这是否可行(至少我正试图这样做),但我真的希望如此。我在R中开发了一个相当复杂的测试环境,如果我可以将函数及其相关参数作为参数传递给高阶函数,这将非常有帮助。我可以在不要求用户输入的情况下轻松完成这项工作,但readline()会生成字符串这一事实让我的工作变得有点棘手。这是一个简化版本(请注意,我假设参数输入为一个数值,但实际上,我在实际代码中对数据类型进行错误检查。这只是简化以了解要点): 这很接近,因为它确实在全局环境中为这个_参数赋值12,但我真的希望返回 > read_i
> read_in()
Enter the name of parameter: this_param
Enter the value for this_param : 12
[[1]]
this_param = 12
因此,我可以将此_param=12作为参数传递给另一个高阶函数(除了此_param作为参数的实际函数之外)。同样,与我实际尝试的操作相比,这是非常简单的,即在使用UI而不是手动输入对我的高阶函数的调用时,将一系列函数和相关参数作为参数传递给高阶函数,而高阶函数的调用将非常长且容易出现人为错误。总的来说,弄清楚如何实现我上面列出的目标将极大地帮助我的发展,因此任何意见都将不胜感激。谢谢 使用
do.call
可以将命名列表传递给函数
read_in <- function() {
temp_nm <- readline(prompt = paste("Enter the name of parameter: "))
temp_vlu <- as.numeric(readline(prompt = paste("Enter the value for ",temp_nm,": ")))
setNames(list(temp_vlu), temp_nm)
}
f <- function(x, y, some_param) {
some_param
}
out <- read_in()
# Enter the name of parameter: some_param
# Enter the value for some_param : 12
# some_param
# 12
do.call('f', out)
# [1] 12
阅读\u您是否查看了范围分配操作符非常抱歉,我现在就这么做。谢谢你的提醒!!
> read_in()
Enter the name of parameter: this_param
Enter the value for this_param : 12
[[1]]
this_param = 12
read_in <- function() {
temp_nm <- readline(prompt = paste("Enter the name of parameter: "))
temp_vlu <- as.numeric(readline(prompt = paste("Enter the value for ",temp_nm,": ")))
setNames(list(temp_vlu), temp_nm)
}
f <- function(x, y, some_param) {
some_param
}
out <- read_in()
# Enter the name of parameter: some_param
# Enter the value for some_param : 12
# some_param
# 12
do.call('f', out)
# [1] 12