9

Rのいくつかのタイプの関数の主な違いを理解するのに役立ちます。

さまざまな種類の関数の定義にやや圧倒され、さまざまな種類の関数が互いにどのように関連しているかを理解するのがやや難しくなっています。

具体的には、次の種類の関数の関係と違いについて混乱しています。

  1. ジェネリックまたはメソッド:入力引数のクラスに基づいて、メソッドディスパッチを使用したジェネリック関数は適切なメソッド関数を呼び出します。

  2. 見えないvs見える

  3. プリミティブvs.内部

これらのさまざまなタイプの関数が互いにどのように関連しているか(あるとしても)、およびそれらの間のさまざまな違いと重複が何であるかについて、私は混乱しています。

4

1 に答える 1

2

プリミティブと内部に関するいくつかのドキュメントは次のとおりです。http://www.biosino.org/R/R-doc/R-ints/_002eInternal-vs-_002ePrimitive.html

ジェネリックは、クラスオブジェクトに適用できるジェネリック関数です。各クラスは、ジェネリックとして設定される特定のメソッドで記述されています。したがって、「methods」関数を使用した一般的な呼び出しに関連付けられている特定のメソッドを確認できます。

methods(print)

これにより、一般的な「印刷」に関連するすべてのメソッドが一覧表示されます。または、この呼び出しで特定のクラスが持つすべてのジェネリックを確認できます

methods(,"lm")

ここで、lmはクラス線形モデルです。次に例を示します。

x <- rnorm(100)
y <- 1 + .4*x + rnorm(100,0,.1)
mod1 <- lm(y~x)
print(mod1)
Call:
lm(formula = y ~ x)

Coefficients:
(Intercept)            x  
       1.002        0.378  

print.lm(mod1)
Call:
lm(formula = y ~ x)

Coefficients:
(Intercept)            x  
       1.002        0.378  

print(mod1)(汎用呼び出し)とprint.lm(mod1)(クラスへのメソッド呼び出し)はどちらも同じことを行います。なぜRはこれを行うのですか?よくわかりませんが、私が理解しているように、それがメソッドとジェネリックの違いです。

于 2012-07-31T06:59:07.733 に答える