использование символа для определения функции ввода в r - PullRequest
1 голос
/ 23 октября 2019

Я хочу написать функцию. Однако предполагается, что я не знаю входные аргументы функции. У меня просто есть символьный вектор для определения входных аргументов функции. Рассмотрим следующий код:

f <- expression(exp(-d^2/s^2) )
fx <- function(d, s){ eval( f[[1]] ) }

В приведенном выше коде я знаю параметры expression и легко определяю для него функцию расчета. Но я получаю выражение от пользователя и не знаю, каковы параметры. Итак, я хочу что-то вроде этого:

f <- expression(exp(-d^2/s^2) )
v = all.vars(f)
#"d" "s"
fx <- function(?){ eval( f[[1]] ) }

Я хочу преобразовать v в d и s в функции ввода вместо ?. Есть ли способ?

1 Ответ

3 голосов
/ 23 октября 2019

Существует несколько способов программного конструирования функций, один из которых:

body <- quote(exp(-d^2/s^2))
arg_names <- all.vars(body)
args <- setNames(rep(NA,length(arg_names)),all.vars(body))
fx <- as.function(c(args,body))

>   fx(1,1)
[1] 0.3678794
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...