如何列出R函数含省略号(...)在内的所有参数?
嘿,这个问题我太有共鸣了!args(qplot)确实只能展示函数定义里的“表层”参数,想要搞清楚...到底能传哪些参数,关键得看这个省略号是被函数传递给了哪个底层函数。下面给你几个实用的方法:
方法1:看函数帮助文档的说明
直接在R里敲?qplot打开帮助页面,找到Arguments部分,你会看到关于...的描述:
Other arguments passed on to
geom_*()orstat_*()layers.
这就说明qplot里的...是用来传递参数给对应的几何对象(geom)或者统计变换(stat)函数的。比如你用qplot(x, y, geom = "point"),那...的参数就对应geom_point()的所有参数;如果用的是geom = "line",就对应geom_line()的参数。
接下来你只需要查看对应geom/stat函数的参数就行,比如敲?geom_point或者args(geom_point),就能看到所有可以通过...传递给qplot的参数了。
方法2:查看函数源代码
直接在控制台输入qplot然后回车,就能看到它的源代码。你可以在代码里找到...被传递的位置,比如qplot的核心逻辑里会把...传给图层函数:
# 简化后的关键代码片段 p <- ggplot(data = data, mapping = mapping) p <- p + do.call(geom, list(...))
从这里就能明确,...是直接传给你指定的geom对应的函数,所以去查那个函数的参数就对了。
方法3:用formals()获取底层函数的完整参数
如果已经知道...传给了哪个函数,比如geom_point,可以用formals()来获取它的所有参数(包括默认值):
formals(geom_point)
执行后会返回一个列表,里面包含了geom_point的所有参数,这些都是可以通过qplot的...来传递的。
举个实际例子,如果你想在qplot里调整点的大小和颜色,就可以直接传size和color参数(这两个都是geom_point的参数):
qplot(mpg, wt, data = mtcars, geom = "point", size = 2, color = "red")
内容的提问来源于stack exchange,提问作者Thomas Zou

