必要なすべての依存関係 (関数とデータ) を新しい環境にロードし、その環境内で式を評価することにより、サンドボックス化された方法で R コードのチャンクを実行しようとしています。ただし、環境内の他の関数を呼び出す関数で問題が発生しています。簡単な例を次に示します。
jobenv <- new.env(parent=globalenv())
assign("f1", function(x) x*2, envir=jobenv)
assign("f2", function(y) f1(y) + 1, envir=jobenv)
expr <- quote(f2(3))
eval
onを使用すると、見つからないためexpr
失敗しますf2
f1
> eval(expr, envir=jobenv)
Error in f2(3) : could not find function "f1"
一方、明示的に環境をアタッチすると機能します
> attach(jobenv)
> eval(expr)
[1] 7
eval
明らかな何かが欠けている可能性がありますが、機能する呼び出しの順列が見つかりませんでした。環境を付けずに同じ効果を得る方法はありますか?