5
在Matlab中如果我有一個函數f,如簽名爲f(A,B,C),我可以僅具有一個變量b的函數,這將調用F具有固定一個= a1和C = C1 :In R什麼是在Matlab中的@函數句柄的等價物?
g = @(b) f(a1, b, c1);
在R中是否有等價物,還是我只是需要重新定義一個新函數?
在Matlab中如果我有一個函數f,如簽名爲f(A,B,C),我可以僅具有一個變量b的函數,這將調用F具有固定一個= a1和C = C1 :In R什麼是在Matlab中的@函數句柄的等價物?
g = @(b) f(a1, b, c1);
在R中是否有等價物,還是我只是需要重新定義一個新函數?
也有方便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的解決方案的一個重要區別在於使用Curry
g
的定義並沒有提到b
。因此,當f
中的參數數量變大時,您可能更喜歡這種方法。
g <- function(b) f(a1, b, c1)
還有'pryr :: partial'和'ptools','%<<%', '%>>%'和'%()%'。目前尚不清楚參數的部分評估和懶惰評估應該如何相互作用,而每個包採取的方法稍有不同。 – hadley 2013-03-26 13:17:16