实现通用绘图方法的最佳方法是什么,因为我有2个系列+图例? 问题是我想为颜色和图例提供一些不错的默认值,但用户应该可以自由更改它:
obj = list(y1 = runif(100, 0, 10), y2 = runif(100, 20, 30))
class(obj) = 'foo'
plot.foo = function(myobj, col1 = 'red', col2 = 'blue', type = 'l', ...)
{
ylim = c(min(obj$y1, obj$y2), max(obj$y1, obj$y2))
plot(myobj$y1, type = type, col = col1, panel.first = grid(col = '#A9A9A9'), ylim = ylim, ...)
lines(myobj$y2, col = col2, type = type, ...)
}
plot(obj)
这看起来不错,但如果我打电话
plot(obj, col = 'black')
它引发了一个错误:
Error in plot.foo(obj, col = "black") :
argument 2 matches multiple formal arguments
有没有办法在不破坏情节协议的情况下处理2系列+传说? (另一个问题是同步传奇 lwd 和 pch 参数)
如果我骑上了...... arg,CRAN会拒绝我的包裹吗? 谢谢!
答案 0 :(得分:0)
你可以有一个期望名为cols的向量,没有默认值。然后,您可以添加:
if(missing(cols)){
col1= "red"
col2 = "black"
} else {
col1=cols[1]
col2=cols[2]
}
肯定有更好的方法可以做到,但只是想我会把它扔掉。