表達爲函數體我試圖寫一個程序,它的表達作爲輸入,並返回的功能與結合作爲它的主體,其表達。捕獲中的R
caller <- function (expr, params) {
Function <- function (params, body, env = parent.frame()) {
# returns a function
}
Function(params, body = expr)
}
func <- caller (a + b, c('a', 'b'))
func(1, 2)
[1] 3
我可以像
params <- c('a', 'b')
f <- function() {}
formals(f) <- structure(
replicate(length(params), NULL),
names = params
)
我無法想出的動態添加表達爲主體的方式很容易綁定參數,使用的東西。我試着從pryr庫使用替代()和適應make_function,但我不能完全得到的東西的工作。我最好的嘗試是
body(f, parent.frame()) <- as.list(match.call())[-1]$body
我無法得到這與替代工作。有關如何綁定身體的任何想法,以使最頂級的程序按預期工作?
我已經看到了SO similar questions,但解決方案似乎並不satistfy這個問題。
謝謝:)我喜歡你的解決方案來添加沒有默認參數的參數 – RyanGrannell 2013-05-15 14:53:06
它看起來像'g(a + b,a,b = a)'不起作用,因爲你的代碼將第二個函數參數簡單地轉換爲'a' 。我認爲最好不要改變任何命名的論點。 – 2013-05-24 14:48:19