5

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

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

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

4

2 回答 2

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 的解决方案的一个重要区别是gusing的定义Curry没有提到b. f因此,当参数数量变大时,您可能更喜欢这种方法。

于 2013-03-26T12:18:42.780 回答
5
g <- function(b) f(a1, b, c1)
于 2013-03-26T11:56:13.253 回答