我試圖讓一個函數工廠使用自定義形式參數名稱來創建函數。這個想法是向工廠提供一個字符串,而這個字符串又將其替換爲返回函數的形式和主體。我已經設法使用eval(parse(text = paste()))來做到這一點,但我在其他地方看到這個不好的做法。我怎樣才能得到相同的輸出,同時避免做evalparse?在函數工廠中替換形式參數r
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>
功能環境可以在'的eval()來改變',如果必要的話。 –