在 R 中使用字符定义输入函数

  • 本文关键字:定义 函数 字符 r function
  • 更新时间 :
  • 英文 :


我想写一个函数。但是,假设我不知道函数的输入参数。我只有一个字符向量来定义函数的输入参数。请考虑以下代码:

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而不是?。有什么办法吗?

有几种方法可以通过编程方式构造函数,其中一种方法是:

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

最新更新