Hi, for the r-devel archives, I report here the answer of Martin Morgan on stackoverflow (http://goo.gl/CF5I9):
Actually, the no-argument constructor returns an invalid object, too, it's just not tested > validObject(new("TestClass")) Error in validObject(new("TestClass")) : invalid class "TestClass" object: invalid object for slot "lmOutput" in class "TestClass": got class "S4", should be or extend class "nls.lm" The solution is to provide an appropriate prototype, maybe setClass ( Class="TestClass", representation=representation( lmOutput = "nls.lm", anumeric = "numeric" ), prototype=prototype( lmOutput=structure(list(), class="nls.lm") ) ) Answered by Martin Morgan All the best Davide R. On Dec 12, 2012, at 2:51 PM, Davide Rambaldi wrote: > Hi all, this is my first post in R devel… sorry if I lost some of the > guidelines. > > Anyway this is my problem: > > Version: > > R version 2.15.2 (2012-10-26) > Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit) > > I want to make an S4 class that use the output object of the function of > nls.lm as a slot: > > setOldClass("nls.lm") > > setClass ( > Class="TestClass", > representation=representation( > lmOutput = "nls.lm", > anumeric = "numeric" > ) > ) > > > Now, if I want to call this class in a "constructor function" I can do > something like this (correct?): > > myConstructor <- function() > { > return(new("TestClass")) > } > > pippo <- myConstructor() > >> pippo > An object of class "TestClass" > Slot "lmOutput": > <S4 Type Object> > attr(,".S3Class") > [1] "nls.lm" > > Slot "anumeric": > numeric(0) > > > And the object "pippo" seems correctly initialized. > > > If I use this code instead I got an error: > > myConstructor2 <- function() > { > pippo <- new("TestClass", anumeric=1000) > return(pippo) > } > >> pippo <- myConstructor2() > Error in validObject(.Object) : > invalid class “TestClass” object: invalid object for slot "lmOutput" in > class "TestClass": got class "S4", should be or extend class "nls.lm" > > > Seems that if I want to INIT in new some slots, this create problem with a S3 > Class slot? > > Any clue on how to avoid this problem? > > Thanks > > > > > > ----------------------------------------------------------- > PLEASE NOTE MY NEW EMAIL ADDRESS > ----------------------------------------------------------- > > ----------------------------------------------------- > Davide Rambaldi, Bioinformatics PhD. > ----------------------------------------------------- > IEO ~ MolMed > [e] davide.ramba...@ieo.eu > [e] davide.ramba...@gmail.com > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel