将对象名称传递给do.call()函数

时间:2014-01-31 04:42:16

标签: r 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

1 个答案:

答案 0 :(得分:6)

您希望在致电alist时使用do.call

alist处理其参数,就好像它们描述了函数参数一样。所以不评估这些值

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

或者您可以使用quote

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