R 言語では、関数 ff(jj, kk, mm) があるとします。呼び出し関数 (または対話型セッションでの人間の呼び出し) が、呼び出し時に mm を jj と kk に任意の方法で依存させることができるようにしたいと考えています。
具体的には、次のように仮定します。
ff <- function(jj, kk, mm){
xx <- jj + kk
out<- xx/mm
out
}
次に、実行時に設定したいと思いmm <- jj*kk
ます。すなわち:
ff(2, 3, (jj*kk))
これにより、次の結果が得られます。
Error in ff(2, 3, (jj * kk)) : object 'jj' not found
このエラーは が評価されるまでスローされませんmm
。つまり、jj
がkk
正常に評価された後です。そのため、それらは異なるスコープ ルールで 2 回評価されます。これは R 標準のスコープであることを理解しています。私が尋ねているの
mm
は、必要な前にそれらの引数が評価されている、または評価できる場合に、単純な数値または他の仮引数の関数を渡すことができるような方法で関数を作成できるかどうかです。
これを行うべきかどうかを尋ねているわけではないことに注意してください。この後者の質問について意見を述べる人々に対して、私は断固として礼儀正しいふりをします。
また、jj を事前に計算して事前に消化した数値を渡すことができるかどうかも尋ねていません。これがもっともらしい答えであることは知っていますが、問題を単純化した理由からうまくいきません。