Drm*_*old 6 c c++ r compilation abstract-syntax-tree
我正在编写一个在R中实现特定优化算法的包,用于各种预先指定的目标函数(要优化的函数).优化代码本身用C语言编写.为了使代码尽可能高效,我还在C中重新实现了目标函数.在当前阶段,R的作用是使用.Call为C代码提供接口. .
我希望该软件包能够处理任何用户提供的目标函数.但是,我不想从C调用R函数,这会产生很大的开销,并且很可能会非常缓慢.
我真正想要的是一种将有限类R函数(通常在统计和机器学习中看作成本函数)作为参数传递的方法,将此R函数转换为C函数,然后将其用作目标优化算法中的函数.
R与LISP有很强的育儿关系.获得函数的抽象语法树(AST)非常简单.我认为有可能将AST解析为C函数然后编译它或者只是动态传递它(我不知道这是否在C中是可行的)
注意:不必将此作为R包执行.试图在R包的刚性结构中执行此操作可能会使事情变得更加困难.