6

setMethod を使用して、さまざまなクラスのオブジェクトの「概要」関数をオーバーライドしています。

もともと、私はこのアプローチを使用しました:

setMethod('summary', "class_1",
           function(object, ...) {
            #code for class_1 summary here...
          }          
)

setMethod('summary', "class_2",
          function(object, ...) {
            #code for class_2 summary here...
          }          
)

setMethod('summary', "class_3",
          function(object, ...) {
            #code for class_3 summary here...
          }          
)

...など、クラスごとに。

ただし、全部で 12 の異なるクラスがあるため、コードは非常に反復的になりました。このような繰り返しを避けるために、クラス名を含む関数を作成しました。

all_classes = function() {
  c("class_1", "class_2", "class_3") #and so on for each class
}

次に、ラップリーを使用しました:

lapply(
  1:length(all_classes()),
  function(k)
    setMethod('summary', all_classes()[k],
                function(object, ...) {
                  #code here...
                }
    )
)

これは機能しますが、異なるクラスごとに「要約」関数をコンパクトに作成するという私の目的を達成するためのより良い方法があるかどうかを知りたいです。

ありがとう、

ジョン。

4

1 に答える 1