在 Matlab 中,如果我有一个函数 f,例如签名是 f(a,b,c),我可以创建一个只有一个变量 b 的函数,该函数将调用 f 并具有固定的 a=a1 和 c=c1:
g = @(b) f(a1, b, c1);
R中是否有等价物,还是我只需要重新定义一个新函数?
在 Matlab 中,如果我有一个函数 f,例如签名是 f(a,b,c),我可以创建一个只有一个变量 b 的函数,该函数将调用 f 并具有固定的 a=a1 和 c=c1:
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 的解决方案的一个重要区别是g
using的定义Curry
没有提到b
. f
因此,当参数数量变大时,您可能更喜欢这种方法。
g <- function(b) f(a1, b, c1)