【问题标题】:How to override an argument passed with "..." [duplicate]如何覆盖使用“...”传递的参数 [重复]
【发布时间】:2015-08-28 23:05:09
【问题描述】:

假设我写了以下函数

f = function(x, y, ...){
    plot(x, ...)
    lines(y, col='red', ...)
}

当我使用参数col= 调用f 时,这会引发错误。我知道如何找到... 传递的参数,但如果col 存在,我想从它们中删除它,所以以下工作。我该怎么做?

【问题讨论】:

    标签: r plot


    【解决方案1】:

    如果你想设置那个值,最简单的方法就是拦截那个值,以防止它首先进入...

    f = function(x,y,col='red',...){
     plot(x,...)
     lines(y,col=col,...)
    }
    

    或者你可以抓住点并调整它们,但是你必须传递参数,就像我们通过 do.call 列出的那样

    f = function(x,y,...){
     plot(x,...)
     dots <-list(...)
     dots$col<-NULL
     do.call(lines, c(list(y,col="red"), dots))
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-30
      • 2020-07-29
      • 2015-12-20
      • 1970-01-01
      • 2011-02-13
      • 2013-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多