Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 避免通过(…)传递参数重复_R - Fatal编程技术网

R 避免通过(…)传递参数重复

R 避免通过(…)传递参数重复,r,R,我有一个函数 somefun <- function(someparameters , ...) { plot(stuff, ...)} somefun <- function(someparameters, main, xlab, ylab, xlim....) 但我宁愿不那样做 有什么简单简洁的解决方案可以实现这一点吗?请尝试modifyList如下所示: f <- function(x, ...) { defaults <- list(xlab = "x

我有一个函数

somefun <- function(someparameters , ...) { plot(stuff, ...)}
somefun <- function(someparameters, main, xlab, ylab, xlim....)
但我宁愿不那样做


有什么简单简洁的解决方案可以实现这一点吗?

请尝试
modifyList
如下所示:

f <- function(x, ...) {
    defaults <- list(xlab = "x", ylab = "y")
    args <- modifyList(defaults, list(x = x, ...))
    do.call("plot", args)
}

<代码> f> p>您可以考虑使用RLAN

的List2函数
my_dots <- rlang::list2(...)

my\u dots你反对什么
有趣的东西它不整洁。似乎没有必要,当我将此代码放入包中时,这些参数将显示在文档中。我认为您的用户将希望在文档中使用这些参数,因此建议使用Henry的建议。我更希望保持绘图的原样。这只是一个预防措施,这样我的函数就不会抛出错误,如果有人真的想修改某些东西。我不打算提供灵活的参数,用户可以根据自己的内心内容进行自定义。谢谢您的回答。但是,现在如何让列表充当参数?i、 e.
绘图(1,2,args)
在这种情况下肯定不起作用case@Ellipsis这就是
do.call的神奇之处:它将参数作为一个列表。另请参见
?do.call
+1对于
修改列表
,我不知道。我会处理
match.call()
结果,但结果远不如此整洁。@省略号,我已对其进行了修改,以给出一个
plot
示例。请注意,这将打破惰性计算。这对你的工作可能重要,也可能不重要。
if( has_name(my_dots, "xlab") ){
  xlab <- my_dots$xlab
} else {
  xlab <- ""
}