我正在尝试R
创建一个包装函数,该函数调用指定的内部函数(这是某个现有函数)并对其执行一些操作。我的包装函数将包含func
我想要调用的内部函数的参数,并且该函数将始终具有特定的标准结构和特定的相关参数,但该参数在不同情况下可能会以不同的名称调用,因此我还希望包装函数中有一个参数,arg.name
该参数指定内部函数中某个参数的名称。我还希望能够使用省略号指定其他参数,...
以允许其他常规输入到内部函数。以下是我想要做的事情的概要(但此代码不起作用):
#Example of the internal function
#This would be an existing function - not one that I program myself
#The variable n might be named something different in some cases
EXISTING.FUNCTION <- function(a, n) { a + n^2 }
#Example of the wrapper function
#It includes arg.name to specify the name of the variable
MY.WRAPPER.FUNCTION <- function(value, func, arg.name, ...) {
#Evaluate the internal function using inputs wrapper inputs
OUTPUT <- func(arg.name = value, ...)
#Return the output
OUTPUT }
我希望能够像这样调用包装函数:
MY.WRAPPER.FUNCTION(value = 4, func = EXISTING.FUNCTION, arg.name = 'n', a = 3)
#What I want to get
[1] 19
#What I actually get
Error in func(arg.name = value, ...) : unused argument (arg.name = value)
我不确定如何在包装函数中指定内部函数的内部使用中将R
字符串识别为变量名称。我认为这会用到一个或多个求值函数(例如, ,,等等),但我尚未成功修改上述代码,使其能够识别内部函数中的参数名称。arg.name
substitute
quote
as.name
arg.name
补充信息:以上内容旨在将问题精简至本质,但如果这很重要,我想要使用的现有函数是概率分布的分位数函数。通常,这些函数会有一个名为的概率参数,p
但我希望考虑到有人可能会用不同的概率参数名称来编写分位数函数。我不确定这种情况是否对解决方案有影响,但这正是问题的动机。