2012-05-15 4 views
1

잘하면이 너무 간단하지 않습니다. 내가 변수에 할당 한 함수의 이름을 알려주는 함수를 찾고있다. 그럼 뭔가 같은함수 이름 얻기

x <- mean 
the_function_i_look_for(x) 
[1] "mean" 

어떤 아이디어? 미리 많은 감사드립니다!

편집 :

확인이 좀 더 상세한 예이다 : 실제로 I 다시 내게 data.frame을주는 I는 임의의 로그를 통과 여기서 기능을 가지고. 데이터 프레임의 한 열 이름은 사용 된 대수를 나타내야합니다.

> myFunction <- function(log, x) { 
    df <- data.frame(x, log(x)) 
    names(df) <- c(the_function_i_look_for(log), "x") 
    return(df) 
    } 
> myFunction(log10, c(10,100,1000)) 
> log10 x 
    1  1 10 
    2  2 100 
    3  3 1000 
+2

당신이 실제로 일을하려고 무엇 : 도 ReferenceClasses을 위해 작동하는 것 같다? 'x'로 무엇을 할 것인지에 따라, 다른 접근 방식이 있습니다. 함수 이름 만 문자열로 저장할 수도 있습니다. 예를 들어 –

+1

은 함수에 대한 인수 (예 :'mean'을 사용하는 함수)입니다. 나는 당신이 그것을 사용하는 방법을 보여주기 위해 코드의 일부를 추가했다면 가장 좋을 것이라고 생각한다. –

+0

'methods (x)'는이 함수에 대해 정의 된 메소드가 있는지 알려줍니다. true이면 함수 이름이 표시되고 그 뒤에 메소드가 표시됩니다. 이제 정의 된 메소드가없는 함수에 대한 해결책을 찾았습니다. :) –

답변

3

당신은 ?substitute을 사용할 수

myFunction <- function(log, x) { 
    df <- data.frame(x, log(x)) 
    names(df) <- c("x", substitute(log)) 
    return(df) 
} 

myFunction(log10, c(10,100,1000)) 
#  x log10 
#1 10  1 
#2 100  2 
#3 1000  3 

편집 :

foo <- setRefClass("foo", 
    methods = list(
    bar = function(x) { 
     message("function: ", substitute(x)) 
    } 
)) 

f <- foo$new() 
f$bar(log) 
# function: log 
f$bar(mean) 
# function: mean 
+0

그건 고마워요! – Beasterfield

+0

어쩌면, 나는이 대답을 받아들이기에 너무 빠르며, R이 얼마나 복잡한지를 알지 못했다는 것을 정말로 인정해야만합니다. myFunction은 실제로는 함수가 아니라 ReferenceClass의 메소드입니다. 환경을 지정하지 않고 '대체'를 사용하는 솔루션이 제대로 작동하지 않는 것 같습니다. – Beasterfield

+1

글쎄, 당신이 우리에게 재현 가능한 예제를주기 위해 질문을 편집 할 수 있습니까? (PS, 그냥 궁금 해서요 :이 언어는이 언어의 언어로 쉬운 일입니까?) –