"["
作成したカスタム クラスの添え字演算子 ( ) をオーバーロードしようとしています。下記の件について、どう対処したらよいか検討中です。
- オペレーターが lhs または rhs のどちらを使用しているかをどのように判断できますか? すなわち
a[x] = foo
対foo = a[x]
foo = a[,x]
最初のパラメーターをどのように識別できますか?- a[seq(x,y)] を使用すると、シーケンス全体が展開されているようです。展開せずに最初、ステップ、最後の値を取得する簡単な方法はありますか?
編集:私の最初のポイントは複数の回答を受け取りました。その過程で、2番目の答えを見つけました。「missing」関数を使用して、どのパラメーターが存在するかを把握できます。
サンプルコードは次のとおりです。
setMethod("[", signature(x="myClass"),
function(x, i, j, k, l) {
if (missing(i)) { i = 0 }
if (missing(j)) { j = 0 }
if (missing(k)) { k = 0 }
if (missing(l)) { l = 0 }
})
ポイント3は私にとって最も優先度が低いため、この質問への回答を受け入れました。