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 シリーズ + 凡例を処理する方法はありますか? (別の問題は、凡例のlwdおよびpchパラメータを同期することです)

そして、私が... 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 に答える