Matlabの場合、f(a、b、c)のような関数fを持つと、固定a = a1とc = c1のfを呼び出す変数bを1つしか持てない関数を作ることができます:Rでは、Matlabの@ function handleに相当するものは何ですか?
g = @(b) f(a1, b, c1);
Rには同等の機能がありますか、新しい機能を再定義するだけですか?
Matlabの場合、f(a、b、c)のような関数fを持つと、固定a = a1とc = c1のfを呼び出す変数bを1つしか持てない関数を作ることができます:Rでは、Matlabの@ function handleに相当するものは何ですか?
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