首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当参数是语言对象时,通过do.call添加ggtitle

当参数是语言对象时,通过do.call添加ggtitle
EN

Stack Overflow用户
提问于 2015-05-07 17:15:09
回答 1查看 262关注 0票数 11

考虑一个简单的函数,它为grob添加了一个ggtitle

代码语言:javascript
复制
f <- function(PLOT, TITLE) {
  PLOT + ggtitle(TITLE)
}

直接调用函数就像预期的那样工作。

但是,当do.call(f, ..)language对象时,通过language调用函数会引发错误。

代码语言:javascript
复制
## Sample Data
TIT <- bquote(atop("This is some text",  atop(italic("Here is some more text"))))
P   <- qplot(x=1:10, y=1:10, geom="point")

## WORKS FINE
f(P, TIT)

## FAILS
do.call(f, list(P, TIT))
## Error in labs(title = label) : could not find function "atop"

当然,只有当TIT是语言对象时才会发生这种情况。

代码语言:javascript
复制
TIT.char <- "This is some text\nHere is some more text"
do.call(f, list(P, TIT.char))
## No Error

当参数是语言对象时,如何正确地使用do.call()

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-07 17:20:03

使用

代码语言:javascript
复制
do.call(f, list(P, TIT), quote=TRUE)

而不是。问题是,在运行do.call时,将对表达式进行评估。通过设置quote=TRUE,它将引用参数,使它们在传递给f时保持未求值。您也可以显式引用TIT

代码语言:javascript
复制
do.call(f, list(P, quote(TIT)))
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30107702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档