有什麼辦法,給一個函數作爲參數傳遞,在評估它之前改變它的輸入參數字符串?在R中評估函數之前將函數改爲參數?
這裏是僞代碼什麼我希望能實現:
test.func <- function(a, b) {
# here I want to alter the b expression before evaluating it:
b(..., val1=a)
}
鑑於函數調用傳遞給b
,我想在a
添加爲另一個參數,而無需在b
始終指定...
呼叫。所以從這個test.func
調用的輸出應該是:
test.func(a="a", b=paste(1, 2))
"1" "2" "a"
編輯:
另一種方式,我可以看到做這樣的事情是,如果我可以在父功能的範圍內分配額外的參數(再次,作爲僞代碼);在這種情況下a
將T1和T2,因此的範圍之內,但不是全局分配:
t2 <- function(...) {
paste(a=a, ...)
}
t1 <- function(a, b) {
local({ a <<- a; b })
}
t1(a="a", b=t2(1, 2))
這有點類似於柯里在我嵌套函數內部的參數。
編輯2:
只是爲了多一個註釋添加到這一點:我認識到,一個相關的辦法可能是使用「prototype-based programming」這樣的事情會被繼承(這可能與the proto package實現)。但我希望在R中評估之前簡單地改變輸入參數。
你能不能給一個現實的問題,你可以修改?重新思考你的方法可能是有條不紊的。 – hadley 2010-04-07 16:15:19