在Matlab中如果我有一个函数f,例如签名是f(a,b,c),我可以创建一个只有一个变量b的函数,它将调用带有固定的a = a1和c =的f C1:
g = @(b) f(a1, b, c1);
R中是否有等价物,或者我只需重新定义一个新函数?
答案 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)