Hello! A simple example.
setClass("myclass" ,representation(info="character") ,contains="matrix" ) setAs("myclass","vector" ,def=function(from) { print("enters?") to<-summary(from[,1]) to<-as.vector(to) to } ) #init dd<-matrix(1:6,nrow=2) rownames(dd)<-c("a","b") tt<-new("myclass",dd) class(tt) as(tt,"vector") summary(dd[,1]) What I expect. R : Copyright 2004, The R Foundation for Statistical Computing Version 1.9.1 Patched (2004-08-30), ISBN 3-900051-00-3 > class(tt) [1] "myclass" attr(,"package") [1] ".GlobalEnv" > as(tt,"vector") [1] "enters?" [1] 1.00 1.25 1.50 1.50 1.75 2.00 > summary(dd[,1]) Min. 1st Qu. Median Mean 3rd Qu. Max. 1.00 1.25 1.50 1.50 1.75 2.00 R : Copyright 2004, The R Foundation for Statistical Computing Version 2.0.0 Under development (unstable) (2004-09-06), ISBN 3-900051-07-0 > class(tt) [1] "myclass" attr(,"package") [1] ".GlobalEnv" > as(tt,"vector") [1] 1 2 3 4 5 6 > summary(dd[,1]) Min. 1st Qu. Median Mean 3rd Qu. Max. 1.00 1.25 1.50 1.50 1.75 2.00 Yours Eryk *********** REPLY SEPARATOR *********** On 9/7/2004 at 10:34 AM John Chambers wrote: >>>It's not possible to tell what you're expecting or actually seeing >>>from >>>this mail. We need to see your code and the results, not your >>>interpretation of how as() is implemented. >>> >>>Meanwhile, here's how a simple class that extends "matrix" works in >>>2.0.0 >>> >>>With the code: >>> >>> setClass("mat1", representation(id="character"), contains = "matrix") >>> >>> mm <- matrix(1:12,3,4) >>> >>> mmm <- new("mat1", mm, id = "numeric") >>> >>>The result is: >>> >>>R> as(mmm, "vector") >>> [1] 1 2 3 4 5 6 7 8 9 10 11 12 >>> >>>Class "vector" is one of the basic R classes; as explained in ?as, the >>>methods for these use the exisiting as.<class> functions, as.vector in >>>this case. >>> >>>The result is indeed the same as coercing mmm to "matrix" first and then >>>to vector >>> >>>R> as(as(mmm, "matrix"), "vector") >>> [1] 1 2 3 4 5 6 7 8 9 10 11 12 >>> >>>as one would expect, but the method for coercing class "mat1" does not >>>go through "matrix": >>> >>>R> selectMethod("coerce", c("mat1", "vector")) >>>function (from, to, strict = TRUE) >>>{ >>> value <- as.vector(from) >>> if (strict) >>> attributes(value) <- NULL >>> value >>>} >>><environment: namespace:methods> >>> >>> >>> >>>Wolski wrote: >>>> >>>> Hi! >>>> >>>> Concerning different behaviour between 1.9.1 patched and: >>>> R : Copyright 2004, The R Foundation for Statistical Computing >>>> Version 2.0.0 Under development (unstable) (2004-09-06), ISBN >>>3-900051-07-0 >>>> >>>> Subtitle: >>>> as(x,"vector"); x is of class "Massvector"; never enters >>>setAs("Massvector","vector"... >>>> >>>> The same code: >>>> >>>> as(mvl[[1]],"vector") >>>> causes under R1.9.1 to enter the function >>>> setAs("Massvector","vector" >>>> ,function(from) >>>> ... >>>> >>>> This never happens under R2.0.0. >>>> >>>> The class "Massvector" contains class "Matrix" >>>> >>>> A phenomenological description of what happens instead with R2.0.0 is >>>> >>>> as(as(mvl[[1]],"Matrix"),"vector") >>>> >>>> and its not what I would expect. >>>> >>>> Is this an intended behaviour in R2.0.0? >>>> >>>> /E >>>> >>>> ______________________________________________ >>>> [EMAIL PROTECTED] mailing list >>>> https://stat.ethz.ch/mailman/listinfo/r-devel >>> >>>-- >>>John M. Chambers >>>Bell Labs, Lucent Technologies office: (908)582-2681 >>>700 Mountain Avenue, Room 2C-282 fax: (908)582-3340 >>>Murray Hill, NJ 07974 Dipl. bio-chem. Witold Eryk Wolski @ MPI-Moleculare Genetic Ihnestrasse 63-73 14195 Berlin 'v' tel: 0049-30-83875219 / \ mail: [EMAIL PROTECTED] ---W-W---- http://www.molgen.mpg.de/~wolski [EMAIL PROTECTED] ______________________________________________ [EMAIL PROTECTED] mailing list https://stat.ethz.ch/mailman/listinfo/r-devel