8

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.listas.data.frameなどを説明してもらえますか? Rはそれがジェネリックであると言います(ジェネリック関数からのオブジェクトのメソッドになるas.listことを期待しているので、R内の矛盾に少し腹を立てたくなるところです)。助けてください。as.listlistas

4

1 に答える 1