Вы не можете таким образом, не легко.От ?match.fun
:
Значение: функция, соответствующая 'FUN' ...
Для меня это означаетон возвращает саму функцию, а не метку, имя или указатель на эту функцию.
Чтобы повысить вероятность того, что вы сможете получить пригодное для использования "имя функции символа", а также фактическое тело функции, попробуйте
someFunction <- function(summary.fun, ...) {
if (is.character(summary.fun)) {
funcname <- summary.fun
realfunc <- match.fun(summary.fun)
} else if (is.function(summary.fun)) {
funcname <- deparse(substitute(summary.fun))
realfunc <- summary.fun
}
# ...
}
quux <- reactive({
req(try(match.fun(input$summary_fun)))
someFunction(summary.fun = input$summary_fun, ...)
})
Использование req(try(match.fun(input$summary_fun)))
означает, что реактивный блок не сработает, если input$summary_fun
не соответствует известному имени функции.(Это может быть не совсем необходимо в вашем контексте, для вас.) (Использование try
связано с тем, что req
вызывает "не правдивый" на объект класса "try-error" ' (из ?req
), что произойдет, если input$summary_fun
не отражает известную функцию.)