【发布时间】:2013-06-27 17:36:51
【问题描述】:
我想创建一个包装函数来替换一些默认参数。
这是我正在努力解决的问题的核心:
Error in localWindow(xlim, ylim, log, asp, ...) :
formal argument "cex" matched by multiple actual arguments
现在有点上下文。假设我为这样的绘图定义了一个包装函数:
myplot <- function(x, ... ) {
plot(x, cex= 1.5, ... )
}
如果我打电话给myplot( 1:10, cex= 2 ),我会收到上述错误。我知道我可以将... 转为列表
l <- list(...)
然后我可以做
if( is.null( l[["cex"]] ) ) l[["cex"]] <- 2
但是,我怎样才能将此列表“插入”回省略号参数?类似的东西(我知道这行不通):
... <- l
编辑:我可以在myplot 定义中使用默认值(正如@Thomas 的回答中所建议的那样),但我不想:函数界面会变得混乱。我想我可以定义一个这样的辅助函数:
.myfunchelper <- function( x, cex= 2.0, ... ) {
plot( x, cex= cex, ... )
}
myfunc <- function( x, ... ) {
.myfunchelper( x, ... )
}
但是 (i) 它不那么优雅并且 (ii) 不能满足我的好奇心。
【问题讨论】:
-
谢谢,非常重要的问题,我现在也在解决这个问题!令人难以置信的是,我在谷歌上搜索“R use argument in ... to override” :-)