Estou tentando R
criar uma função wrapper que chame uma função interna específica (que é uma função existente) e execute algumas ações com ela. Minha função wrapper incluirá um argumento func
para a função interna que desejo chamar, e essa função sempre terá uma estrutura padrão específica com um argumento específico de interesse, mas o argumento pode ser chamado por um nome diferente em casos diferentes. Portanto, também quero um argumento na minha função wrapper arg.name
que especifique o nome de um dos argumentos da função interna. Também quero poder especificar argumentos adicionais com reticências ...
para permitir outras entradas gerais para a função interna. Aqui está um esboço do que quero fazer (mas este código não funciona):
#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 }
Quero poder chamar a função wrapper assim:
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)
Não tenho certeza de como R
reconhecer a sequência de caracteres arg.name
como o nome da variável no uso interno da função interna especificada dentro da função wrapper. Acredito que isso use uma ou mais funções de avaliação (por exemplo, substitute
, quote
, as.name
, etc.), mas ainda não consegui modificar o código acima para que ele seja arg.name
reconhecido como identificador do nome do argumento na função interna.
Informações adicionais: O texto acima foi escrito para simplificar o problema, mas, se for relevante, as funções existentes com as quais quero trabalhar são funções quantílicas para distribuições de probabilidade. Normalmente, elas terão um argumento de probabilidade chamado, p
mas quero considerar a possibilidade de alguém programar uma função quantílica com um nome diferente para o argumento de probabilidade. Não tenho certeza se esse contexto é relevante para a solução, mas essa é a motivação para o problema.