2013-03-26 6 views
5

In Matlab, wenn ich eine Funktion f wie die Signatur habe f (a, b, c), kann ich eine Funktion, die nur eine Variable b, die f mit einem festen a = a1 und c = c1 aufrufen würde :In R was entspricht @ Funktion Handle in Matlab?

Gibt es ein Äquivalent in R, oder muss ich nur eine neue Funktion neu definieren?

Antwort

7

Es gibt auch die bequeme functional::Curry funktional:

f <- function(a, b, c) {a + b + c} 
f(1, 2, 3) 
# [1] 6 

library(functional) 
g <- Curry(f, a = a1, c = c1) 
g(b=2) 
# [1] 6 
g(2) 
# [1] 6 

Ich denke, ein wichtiger Unterschied mit der Lösung des @ NPE ist, dass die Definition von gCurry mit nicht b nicht erwähnt. Daher bevorzugen Sie möglicherweise diesen Ansatz, wenn die Anzahl der Argumente in f groß wird.

+1

Es gibt auch 'pryr :: partially 'und in' ptools', '% <<%', '%>>%' und '%()%'. Es ist nicht klar, wie partielle Bewertung und faule Bewertung von Argumenten interagieren sollten, und jedes Paket verwendet einen etwas anderen Ansatz. – hadley

5
g <- function(b) f(a1, b, c1)