I have a class that extends array and my method for "[" stops with an error:
> setClass("A", contains="array") [1] "A" > setMethod("[", "A", function(x, i, j, ..., drop = TRUE) new("A", callNextMethod())) [1] "[" > a<-new("A",array(1:12,c(4,3,1))) > a An object of class "A" , , 1 [,1] [,2] [,3] [1,] 1 5 9 [2,] 2 6 10 [3,] 3 7 11 [4,] 4 8 12 > a[1:2,2:3,1] Error in x[i = i, j = j, NULL, ...] : incorrect number of dimensions Error in callNextMethod() : error in evaluating a 'primitive' next method > A similar error does not occur when extending a matrix: > setClass("M", contains="matrix") [1] "M" > setMethod("[", "M", function(x, i, j, ..., drop = TRUE) new("M", callNextMethod())) [1] "[" > a<-new("M",matrix(1:12,4,3)) > a[1:2,2:3] An object of class "M" [,1] [,2] [1,] 5 9 [2,] 6 10 > Is there a problem with my method definition for the array-extending class? My work-around is as follows: > setMethod("[", "A", function(x, i, j, ..., drop = TRUE) new("A", `[`(as(x,"array"), i=i, j=j, ..., drop=drop))) [1] "[" > a[1:2,2:3,1] An object of class "A" [,1] [,2] [1,] 5 9 [2,] 6 10 > Cheers, Dan [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel