2017-09-18 12 views
3

実行時に関数によって作成された環境を取得したいと考えていますなし関数ソースを変更することは可能ですか?R呼び出し時の関数によって作成された環境を取得する

fn=function() 
{#Here a new environment is created at each call, how to get it ? 
#This environment can be access with environment() but only (to what I know) 
#from inside the function 

    ... 
} 

私はこのような何かをしたいと思います:

ENVはコールで、FNが作成した環境IDで
env=some_function(fn()) 

+0

は、あなたがこの機能で何をしたいのかの例を提供することはできますか?私はこの機能から何を返すと思いますか? –

+0

@ CorinFAYここでは完全に説明するのは難しいですが、私はいくつかのデバッグ手順を試しています。 – user3507085

答えて

3

あなたは、地球環境内のシンボルにコール環境をバインドする機能をトレースできます。

fn <- function() {x <- 2; 1} 
trace(fn, quote(efn <<- environment()), at = 1) 
fn() 
#Tracing fn() step 1 
#[1] 1 
untrace(fn) 
efn$x 
#[1] 2 
+0

ありがとうございます。 efn = some_fn(fn())のような関数にラップすることをお勧めしますか? – user3507085

+0

私はそれを行う方法を理解しました=> trace(as.character(代用(...))[1]) – user3507085

関連する問題