読者です 読者をやめる 読者になる 読者になる

S4の理解がちょっと深まった

R

色々漁っていたら、色々見つかってS4で長年よく分かっていなかったようなところが分かってきたような気がしているところ。

こないだ作った自分のパッケージのもS4風だとこんな感じで書けそう。

setClass( 
         Class="nw", 
         representation=representation( 
           Y = "numeric",
           X1 = "numeric",
           X2 = "numeric",
           h = "numeric"
           ) 
         ) 

setMethod(f= "plot", signature= "nw", 
          definition=function (x, y, ...){
            Y <- x@Y
            X1 <- x@X1
            X2 <- x@X2
            h <- x@h
            n <- 30
            s1 <- seq(min(X1),max(X1),length=n)
            s2 <- seq(min(X2),max(X2),length=n)
            h11 <- h[1];h12 <- h[2];h21 <- h[3];h22 <- h[4]
            persp(s1,s2,
                  Reduce("+",Map(function(f){
                    outer(s1,s2,f)
                  },mapply(function(X1,X2,Y){y.exp(X1,X2,Y,h11,h12,h21,h22)},X1,X2,Y))) /
                  Reduce("+",Map(function(f){
                    outer(s1,s2,f)
                  },mapply(function(X1,X2){epanechnikov.radial(X1,X2,h11,h12,h21,h22)},X1,X2))),
                  theta=320,phi=20,col=rainbow(50),ticktype="detailed",
                  xlab="x1",ylab="x2",zlab="y",...)
          } 
          ) 

plotの引数の

definition=function (x, y, ...){

の部分にちょっとつまづいたりなど。自分で勝手に設定しようとすると怒られたりするという感じ。あとはこれをパッケージに組み込んでやる方法とかを調べればどうにか形になってくるな。