【发布时间】:2015-08-28 23:05:09
【问题描述】:
假设我写了以下函数
f = function(x, y, ...){
plot(x, ...)
lines(y, col='red', ...)
}
当我使用参数col= 调用f 时,这会引发错误。我知道如何找到... 传递的参数,但如果col 存在,我想从它们中删除它,所以以下工作。我该怎么做?
【问题讨论】:
假设我写了以下函数
f = function(x, y, ...){
plot(x, ...)
lines(y, col='red', ...)
}
当我使用参数col= 调用f 时,这会引发错误。我知道如何找到... 传递的参数,但如果col 存在,我想从它们中删除它,所以以下工作。我该怎么做?
【问题讨论】:
如果你想设置那个值,最简单的方法就是拦截那个值,以防止它首先进入...。
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))
}
【讨论】: