Dear R core team Please apologize for posting the same question twice on R-help and R-devel. Since I was not sure which list is appropriate I tried R-help (Tue Mar 22), but got no answer. Now I do not know if the formulation of my question was unclear or the question is not so easy to answer or to easy (what I do not hope).
My problem: I create a new S4 class, containing one slot, data (of class POSIXlt). I tried to define a transformation via setAs() between the new S4 class and the existing "POSIXlt" class that is virtual S4 Class with subclass "POSIXt". Then using as() gives an error message (see code below) when I transform from "POSIXlt" to the new class. Then I defined another as() from the subclass "POSIXt" to the new class and now everything works well. This is the point where I do not understand what happens and why it works like this. I'd be happy for some hints to improve my understanding (maybe there is a help page or a reference). I'd be happy with a confirmation of a better connoisseur of R than me, that it is not so easy to understand, but correct, if that's the case. Thank you very much. Below I attached my R code. Regards, Christoph Buser -------------------------------------------------------------- Christoph Buser <[EMAIL PROTECTED]> Seminar fuer Statistik, LEO C11 ETH (Federal Inst. Technology) 8092 Zurich SWITZERLAND phone: x-41-1-632-5414 fax: 632-1228 http://stat.ethz.ch/~buser/ -------------------------------------------------------------- ## R Code: ## Definition of my new S4 class setClass("dtime", representation(data = "POSIXlt"), prototype(data = as.POSIXlt("2004/06/01"))) ## Transformation between the new class "dtime" and "POSIXlt" setAs("dtime", "POSIXlt", def = function(from) { [EMAIL PROTECTED] }) setAs("POSIXlt", "dtime", def = function(from) { new("dtime", data = from) }) ## Create a new "dtime" object (x1 <- new("dtime")) str(x1) ## Transformation from "dtime" to "POSIXlt" works well (y1 <- as(x1, "POSIXlt")) str(y1) ## Create a new "POSIXlt" object (y2 <- as.POSIXlt("2004/06/01")) str(y2) ## Transformation from "POSIXlt" to "dtime" fails as(y2, "dtime") > Fehler in insertMethod(methods, sig, args, def, TRUE) : inserting method into non-methods-list object (class "NULL") ## This works properly new("dtime", data = y2) ## Now I put another setAs for the Subclass "POSIXt" setAs("POSIXt", "dtime", def = function(from) { new("dtime", data = from) }) ## Now the transformation to "dtime" class works as(y2, "dtime") ## I am using: > version platform i686-pc-linux-gnu arch i686 os linux-gnu system i686, linux-gnu status alpha major 2 minor 1.0 year 2005 month 03 day 24 language R ______________________________________________ R-devel@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-devel