在R中,Matlab中@函数句柄的等价物是什么?

时间:2013-03-26 11:53:27

标签: r

在Matlab中如果我有一个函数f,例如签名是f(a,b,c),我可以创建一个只有一个变量b的函数,它将调用带有固定的a = a1和c =的f C1:

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

R中是否有等价物,或者我只需重新定义一个新函数?

2 个答案:

答案 0 :(得分: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解决方案的一个重要区别是使用g的{​​{1}}的定义未提及Curry。因此,当b中的参数数量变大时,您可能更喜欢这种方法。

答案 1 :(得分:5)

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