相关疑难解决方法(0)

有没有办法在R中的函数中使用两个'...'语句?

我想编写调用两种功能:plot()legend(),这将是理想的,如果用户可以指定一些额外的参数,然后可通过要么通过plot()legend().我知道我可以使用...以下两种函数之一实现此目的:

foo.plot <- function(x,y,...) {
    plot(x,y,...)
    legend("bottomleft", "bar", pch=1)
}

foo.plot(1,1, xaxt = "n")
Run Code Online (Sandbox Code Playgroud)

这传递xaxt = "n"给情节.但是有没有办法title = "legend"legend()没有预先指定函数头中的参数的情况下将eg传递给调用?


从接受的答案中更新:我认为VitoshKa的方式是实现我想要的最优雅的方式.但是,我必须解决一些小问题,直到它按照我想要的方式工作.

首先,我检查了我要传递给legend哪个参数以及哪个参数plot.为此目的的第一步是查看哪些参数legend是独特的,legend而不是绘图和/或参数的一部分:

legend.args <- names(formals(legend))
plot.args <- c(names(formals(plot.default)), names(par()))
dput(legend.args[!(legend.args %in% plot.args)])
Run Code Online (Sandbox Code Playgroud)

dput()在这里使用,因为该行plot.args <- c(names(formals(plot.default)), names(par()))总是调用一个我不想要的新空图.所以,我使用dput了以下函数的输出.

接下来,我不得不处理重叠的参数(通过它们获取dput(largs.all[(largs.all %in% pargs.all)])).对于一些这是微不足道的(例如x,y)等获得通过这两个功能(例如,pch).但是,在我的实际应用程序中,我甚至使用其他策略(例如,不同的变量名称adj,但在此示例中未实现).

最后, …

r function argument-passing optional-arguments

37
推荐指数
3
解决办法
2812
查看次数