r - 在r中使用字符定义输入函数
问题描述
我想写一个函数。但是,假设是我不知道函数的输入参数。我只有一个字符向量来定义函数的输入参数。考虑以下代码:
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
and s
on 输入函数而不是?
. 有什么办法吗?
解决方案
有几种以编程方式构造函数的方法,其中一种是:
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
推荐阅读
- python - 具有对数刻度 x 轴的条形图的自定义科学轴单位
- angular - 如何从父组件中的表单接收值?
- javascript - 如何从 $_POST 获取数据并发送到另一页?
- javascript - NodeJs Performance.getEntriesByType() 不是函数
- javascript - 如何将json转换为数组数组?
- javascript - 另一个输入收音机正在影响我的 jquery
- php - 网页上显示的 PHP 中未定义的索引错误
- javascript - 如何将 URL 参数与 Vanilla JS 中的输入字段绑定?
- python - 你可以使用来自不同 python 文件的画布吗?
- reactjs - 为什么这不是从地图渲染,反应