2

myMethodオブジェクトmyObjectを引数として受け取るメソッドを作成しました。このメソッドに のリストを渡せるようにしたいと思いmyObjectます。ループを使用してfor各オブジェクトを個別に渡すこともできますが、関数を処理する R の組み込み機能を使用することをお勧めします。

次のようなメソッドを作成しました。

setMethod("myMethod",
      signature = c("myObject"),
      definition = function(obj, ...){
          "some code"
      })

ここに示すデフォルトの方法があります。

myMethod <- function(obj, ...){
    print("Generic base function; does nothing.")
    obj    
}

そのタイプのオブジェクトを送信すると、これは完全に正常に機能します。listOfObjects に myObject のリストが保存されているとします。

私が行った場合:

> myMethod(listOfObjects[[1]])

「私のコード」が実行されると、すべてが期待どおりに機能します。ただし、代わりに同じオブジェクトのリストを送信すると、デフォルトのメソッドにヒットします。

> myMethod(listOfObjects[1:10])

私は得る:

[1] "Generic base function; does nothing."

myMethodリスト内のすべてのオブジェクトで簡単に実行できるようにするためにできることはありますか? for私のリストは非常に大きくなる可能性があるため、「遅い」ループを使用するのではなく、R の組み込みベクトル関数を使用したいと考えています。

4

1 に答える 1

2

まず、関数を処理する R の組み込み機能というフレーズは非常にあいまいです。私の理解では、それはlapplyです。簡単に:

lapply(objs, myMethod)

オブジェクトのリストを取る関数が必要な場合は、次のように定義できます。

setMethod("myMethod",
      signature = c("list"),
      definition = function(objs){
          lapply(objs, myMethod)
})
于 2013-11-11T10:01:58.887 に答える