2017-09-18 6 views
3

실행될 때 함수에 의해 생성 된 환경을 얻고 싶습니다. WITHOUT 함수 소스를 수정하는 것이 가능합니까?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

@ColinFAY 여기서 설명하기는 어렵지만, 짧은 디버깅 절차를 테스트 중입니다. – 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 (substitute (...)) [1]) – user3507085