1. ホーム
  2. r

[解決済み] Rの "S3メソッド "とは何ですか?

2022-06-16 06:40:25

質問

Rの初心者なので、S3のメソッドやオブジェクトがどのようなものなのかわかりません。オブジェクトシステムにはS3とS4があり、可能であればS4よりもS3を使用することを推奨していることがわかりました。 http://google-styleguide.googlecode.com/svn/trunk/google-r-style.html )*. しかし、S3のメソッド/オブジェクトの正確な定義はわかりません。

更新:2019年現在、GoogleのRスタイルガイドのハイパーリンクは ここに .

どのように解決するのですか?

関連する情報のほとんどは、以下のサイトを見ればわかります。 ?S3 または ?UseMethod といった具合に、一言で言えば

S3とは、メソッドディスパッチのスキームを指します。Rを使ったことがある人ならお気づきでしょうが、Rには print , predictsummary といったメソッドを多くの異なる種類のオブジェクトのために使用することができます。

S3では、これは次のように動作します。

  • 目的のオブジェクトのクラスを設定する 興味のあるオブジェクトのクラスを設定する(例:メソッドの呼び出しの戻り値 メソッドの呼び出し glm にはクラス glm )
  • を持つメソッドを提供することは、一般的な の名前 (例 print のように)、次にドット、そして の後にクラス名 (例. print.glm )
  • この一般的な名前には、何らかの準備が必要です。 この一般的な名前に対して行われた ( print ) を作成する必要があります。 を使用することができます。 既存のメソッド名に合わせるだけなら、これは必要ありません。 は必要ありません(必要な場合は、私が以前参照したヘルプを参照してください を参照してください)。

見る人、特に新しく作ったファンキーなモデルフィッティングパッケージのユーザーにとっては、次のように入力できる方がずっと便利です。 predict(myfit, type="class") よりも predict.mykindoffit(myfit, type="class") .

この他にもかなり多くのことがありますが、これで始めることができるでしょう。オブジェクトの属性(クラス)に基づいてメソッドをディスパッチするこの方法には、かなり多くの欠点があります(C言語の純粋主義者は、おそらくその恐怖で夜も眠れないでしょう)が、多くの状況では、ちゃんと機能します。Rの現在のバージョンでは、より新しい方法(S4と参照クラス)が実装されていますが、ほとんどの人はまだ(唯一)S3を使っています。