【发布时间】:2017-08-23 17:59:54
【问题描述】:
我正在尝试创建一个函数工厂来创建具有自定义形式参数名称的函数。这个想法是向工厂提供一个字符串,工厂反过来在形式和返回的函数体中替换它。我已经设法使用 eval(parse(text=paste())) 来做到这一点,但我在其他地方读到了这种不好的做法。如何在避免进行 evalparse 的同时获得相同的输出?
MyLinearRateFunctions<-function(varX){
eval(parse(text=paste("function(a,b,",
varX,
") 1/(a + b*",
varX,
")",sep="")
))
}
(LinearRateMPG<-MyLinearRateFunctions('mpg'))
# function(a,b,mpg) 1/(a + b*mpg)
# <environment: 0x11c2f2a00>
(LinearRateCYL<-MyLinearRateFunctions('cyl'))
# function(a,b,cyl) 1/(a + b*cyl)
# <environment: 0x11e4cb908>
(LinearRateDISP<-MyLinearRateFunctions('disp'))
# function(a,b,disp) 1/(a + b*disp)
# <environment: 0x11e47eae8>
【问题讨论】:
标签: r metaprogramming