2013-03-26 107 views
5

在Matlab中如果我有一個函數f,如簽名爲f(A,B,C),我可以僅具有一個變量b的函數,這將調用F具有固定一個= a1和C = C1 :In R什麼是在Matlab中的@函數句柄的等價物?

g = @(b) f(a1, b, c1); 

在R中是否有等價物,還是我只是需要重新定義一個新函數?

回答

7

也有方便functional::Curry功能:

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 

我覺得跟@ NPE的解決方案的一個重要區別在於使用Curryg的定義並沒有提到b。因此,當f中的參數數量變大時,您可能更喜歡這種方法。

+1

還有'pryr :: partial'和'ptools','%<<%', '%>>%'和'%()%'。目前尚不清楚參數的部分評估和懶惰評估應該如何相互作用,而每個包採取的方法稍有不同。 – hadley 2013-03-26 13:17:16

5
g <- function(b) f(a1, b, c1) 
相關問題