2012-09-03 4 views
6

함수 호출 (예 : mean (x = 1:10))을 인수로 취하여 함수 이름을 반환하는 F 함수 작성 방법을 아는 사람이 있습니까? 함수가 호출 (평균) 되었습니까? 함수 호출에서 함수 호출 이름 추출

지금까지 드 구문 분석하기 전에 식을

(function(x1){ 

    return(deparse(substitute(x1))) 

})(mean(x = 1:10)) 
### 'mean(x = 1:10)' 

변경 1 개 (함수 호출) 아래에 요약되어 내 최고의 시도

많은 도움이하지 않는 것 : 반환

(function(x1){ 

    return(deparse(as.expression(substitute(x1)))) 

})(mean(x = 1:10)) 
# "expression(mean(x = 1:10))" 

가능한 한 익명 함수를 인자로 사용할 수 있기를 원한다면 F은 (function (x) print (x)) (1)에 대해 (function (x) print (x)). 설명이 필요하면 언제든지 의견을 말하십시오. 감사.

edit1 : 메모를하기 위해 첫 번째 괄호를 검사하지 말고 그 전에 코드를 잘라내고 싶습니다 ("평균 (x = 1:10)"은 "평균"을 반환합니다). " 조쉬 오브라이언의 대답은 완벽했다 :

F <- function(x) deparse(substitute(x)[[1]]) 

그것은 작동합니다 위의 조건을 만족하는 기능 F 나쁜 (Fun_nAme는 "실제로

질문 답변 R.에서 법적 함수 이름입니다 2 진 연산자, 표준 함수 및 익명 함수에 적합합니다.

답변

8

다음은 간단한 함수의 그 원하는 것을하십시오 :

F <- function(x) deparse(substitute(x)[[1]]) 

F(mean(x=1:10)) 
# [1] "mean" 

F((function(x) print (x))(1)) 
# [1] "(function(x) print(x))" 

F(9+7) 
# [1] "+" 
1

난 당신이 뭘 하려는지 모르거나 좋은 생각이 나이 여기에 당신이 원하는하지만 경우 정규 표현식과에서 구타의 경우 :

FUN <- function(x1){ 
    z <- deparse(substitute(x1)) 
    list(fun=strsplit(z, "\\(")[[c(1, 1)]], 
    eval=x1) 
} 

FUN(mean(x = 1:10))