0

鉴于我有 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 系列 + 传奇?(另一个问题是同步图例lwdpch参数)

如果我乘坐 ... arg,CRAN 会拒绝我的包裹吗?谢谢!

4

1 回答 1

0

你可以有一个没有默认值的名为 cols 的向量。然后您可以添加:

 if(missing(cols)){
      col1= "red"
      col2 = "black"
  } else {
     col1=cols[1]
     col2=cols[2]
  }

肯定有更好的方法可以做到这一点,但我只是想我会把它扔掉。

于 2012-11-11T03:07:59.110 回答