9

必要なすべての依存関係 (関数とデータ) を新しい環境にロードし、その環境内で式を評価することにより、サンドボックス化された方法で 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))

evalonを使用すると、見つからないためexpr失敗しますf2f1

> eval(expr, envir=jobenv)
Error in f2(3) : could not find function "f1"

一方、明示的に環境をアタッチすると機能します

> attach(jobenv)
> eval(expr)
[1] 7

eval明らかな何かが欠けている可能性がありますが、機能する呼び出しの順列が見つかりませんでした。環境を付けずに同じ効果を得る方法はありますか?

4

2 に答える 2