2017-05-17 12 views
2

함수가 여러 이름 (각각 다른 바인딩 환경에 있음)에 바인딩되어 있다고 가정합니다. 어떤 이름을 사용했는지 알아내는 방법이 있습니까?(명명 된) 함수가 호출 된 이름을 내성적으로 조사 할 수 있습니까?

예제이다 : 함수 위의 첫 번째 통화

original.name <- function() cat("don't know my name (yet)...\n") 
call.thunk <- function (thunk) thunk() 
foo <- original.name 

foo() 
## don't know my name (yet)... 
call.thunk(original.name) 
## don't know my name (yet)... 

는 이름 foo 불려; 두 번째에는 thunk이라는 이름으로 호출됩니다. 이 정보를 확인할 수 있도록 함수의 본문을 수정할 수 있습니까?


은 (이 질문은 R에서 성찰에 대한 자세한 내용을 원하는에 의해 좌우되고, 내가 어떤 특정 문제를 해결하기 위해 노력하고 있지 않다.)

+2

로 작동하고, 솔루션을 제공한다. –

답변

6

sys.call을 시도해보십시오

g <- f <- function() sys.call()[[1]] 
f() 
## f 

주를이 :

  • 이것은 "name" 클래스의 개체를 반환합니다. 문자열로 이름을 얻으려면 as.character(sys.call()[[1]])을 사용하십시오.

  • match.call()[[1]] 또한 쉽게 사람들이 당신이 원하는 것을 이해 할 수 있도록합니다 기술 환경을 설정하는 몇 가지 예제 코드를 추가 몸