R の S3 OO システムは、ジェネリック関数が呼び出されるオブジェクトのクラスに応じてメソッドを呼び出すジェネリック関数を中心にしています。重要なのは、メソッドがクラス内で定義される他の OO プログラミング言語とは対照的に、ジェネリック関数が適切なメソッドを呼び出すことです。
たとえば、mean
関数は汎用関数です。
isGeneric("mean")
methods(mean)
これは印刷されます
TRUE
[1] mean,ANY-method mean.Date mean.default mean.difftime
[5] mean.IDate* mean,Matrix-method mean.POSIXct mean.POSIXlt
[9] mean,sparseMatrix-method mean,sparseVector-method
see '?methods' for accessing help and source code
私はRを少し調べていて、as
関数を見つけました。R が関数がジェネリックではないと言っているという事実に混乱していますが、それでもメソッドがあります。
isGeneric("as")
methods(as)
TRUE
[1] as.AAbin as.AAbin.character
[3] as.alignment as.allPerms
[5] as.array as.array.default
[7] as.binary as.bitsplits
[9] as.bitsplits.prop.part as.call
...
最後にas
、ジェネリックではないという警告があります。
Warning message:
In .S3methods(generic.function, class, parent.frame()) :
function 'as' appears not to be S3 generic; found functions that look like S3 methods
誰かが私にas
機能が何であるか、どのように接続されているas.list
かas.data.frame
などを説明してもらえますか? Rはそれがジェネリックであると言います(ジェネリック関数からのオブジェクトのメソッドになるas.list
ことを期待しているので、R内の矛盾に少し腹を立てたくなるところです)。助けてください。as.list
list
as