2014-01-31 1 views
4

do.call() 함수에 객체 이름을 전달하는 방법이 있습니까? 예를 들어do.call() 함수에 객체 이름을 전달하십시오.

는 :

#First make a function that will return the name of object itself. 
PrintObjectName <- function(obj){ 
    print(deparse(substitute(obj))) 
} 

data(iris) 

PrintObjectName(iris) 
[1] "iris" #This is what I want 

do.call(what="PrintObjectName", args=list(obj=iris)) 
#The output is a messy stuff 

답변

6

당신은 do.call에 전화 내 alist를 사용하고 싶습니다.

alist은 함수 인수를 설명하는 것처럼 해당 인수를 처리합니다. 그래서 값은

do.call(what="PrintObjectName", args=alist(obj=iris)) 
# [1] "iris" 

을 평가되지 않습니다 또는 당신은

do.call(what="PrintObjectName", args=list(obj=quote(iris))) 
+0

quote가 마법처럼 작동합니다, 감사 사용할 수 있습니다. – ChaoYang

+1

이 시점에서'eval()'을 사용하고 수동으로 호출을 구성하는 것이 더 낫다고 생각합니다. – hadley