Wow, that was fast! Thanks a lot! Regards, Janko
On 06.06.2011 18:29, John Chambers wrote: > Should now behave as expected in r-devel and 2.13 patched, as of SVN > 56045, June 4. (noted in the NEWS file.) > > > On 6/6/11 6:27 AM, Janko Thyson wrote: >> Thanks a lot for your reply and I'm sorry if I didn't make it quite >> clear what I expected, but you got it right: >> >> I'd simply like to see the same behavior for Reference Classes as for S4 >> classes when extending classes with "ANY" fields as featured in the >> example below. >> >> > setClass("A", representation(x="ANY")) >> [1] "A" >> > setClass("B", contains="A", representation(x="character")) >> [1] "B" >> > new("B", x = "abc") >> An object of class "B" >> Slot "x": >> [1] "abc" >> >> Thanks for addressing this! >> >> Regards, >> Janko >> >> On 03.06.2011 19:13, John Chambers wrote: >>> Well, your mail is unclear as to what you expected, but there is one >>> bug shown by your example. >>> >>> The behavior of S4 classes is sensible, at least as far as the example >>> shows: >>> >>> >>> > setClass("A", representation(x="ANY")) >>> [1] "A" >>> > setClass("B", contains="A", representation(x="character")) >>> [1] "B" >>> > new("B", x=1:3) >>> Error in validObject(.Object) : >>> invalid class "B" object: invalid object for slot "x" in class "B": >>> got class "integer", should be or extend class "character" >>> >>> You couldn't expect the new() call to work, as the error message >>> clearly explains. A legitimate call does work: >>> >>> > new("B", x = "abc") >>> An object of class "B" >>> Slot "x": >>> [1] "abc" >>> >>> The reference classes should work the same way, but don't, as your >>> example shows. >>> >>> A <- setRefClass( >>> + Class="A", >>> + fields=list( >>> + .PRIMARYDATA="ANY" >>> + ), >>> + contains=c("VIRTUAL") >>> + ) >>> > B <- setRefClass( >>> + Class="B", >>> + fields=list( >>> + .PRIMARYDATA="character" >>> + ), >>> + contains=c("A") >>> + ) >>> Error in `insertFields<-`(`*tmp*`, value = "character") : >>> The overriding class("character") of field ".PRIMARYDATA" is not a >>> subclass of the existing field definition ("ANY") >>> >>> We'll fix that. And, yes, "ANY" is intended as a universal superclass, >>> but is usually not mentioned explicitly. >>> >>> >>> On 6/3/11 6:53 AM, Janko Thyson wrote: >>>> Dear list, >>>> >>>> I was wondering if you could help me out in clarifying something: >>>> Is it possible to use class "ANY" in slots/fields of formal classes >>>> if you >>>> a) do not want to restrict valid classes of that field and >>>> b) if you are making explicit use of class inheritance? >>>> >>>> It seems to work in simple scenarios but produces errors when class >>>> inheritance comes into play. So I was wondering if that's a feature >>>> or a >>>> bug. >>>> >>>> If using "ANY" is not the right way, I'd appreciate a pointer to >>>> how you >>>> can to this. >>>> >>>> See previous post with an example below. >>>> >>>> Regards, >>>> Janko >>>> >>>> On 06/03/2011 01:53 AM, Janko Thyson wrote: >>>>> On 31.05.2011 18:17, Martin Morgan wrote: >>>>>> On 05/30/2011 07:02 AM, Janko Thyson wrote: >>>>>>> Dear list, >>>>>>> >>>>>>> I would like to set one specific Reference Class field to be of an >>>>>>> arbitrary class. Is there a class that all R objects inherit >>>>>>> from? I >>>>>>> thought that "ANY" was something like this, but obviously that's >>>>>>> not >>>>>>> true: >>>>>>> >>>>>>>> inherits(1:3, "ANY") >>>>>>> [1] FALSE >>>>>> >>>>>> I can't speak to the implementation, but ANY functions as a base >>>>>> class >>>>>> in terms of slot / field assignment and inheritance, e.g., >>>>>> >>>>>> setClass("A", representation(x="ANY")) >>>>>> new("A", x=1:3) >>>>>> >>>>>> Martin >>>>> >>>>> Hi Martin, >>>>> >>>>> sorry for the late response. The way you do it works. Yet, when you >>>>> declare dependencies more explicitly (contains=XY), then R >>>>> complains. Is >>>>> this a feature or a bug (with respect to the "less explicit" way >>>>> working >>>>> just fine)? See the example below: >>>>> >>>>> # S4 >>>>> setClass("A", representation(x="ANY")) >>>>> new("A", x=1:3) >>>>> >>>>> setClass("A", representation(x="ANY")) >>>>> setClass("B", contains="A", representation(x="character")) >>>>> new("B", x=1:3) >>>>> >>>>> # Reference Classes >>>>> setRefClass( >>>>> Class="A", >>>>> fields=list( >>>>> .PRIMARYDATA="ANY" >>>>> ), >>>>> contains=c("VIRTUAL") >>>>> ) >>>>> B<- setRefClass( >>>>> Class="B", >>>>> fields=list( >>>>> .PRIMARYDATA="character" >>>>> ), >>>>> contains=c("A") >>>>> ) >>>> >>>> Bug, I'd say. Martin >>>> >>>>> >>>>> Regards, >>>>> Janko >>>>>>> >>>>>>> Regards, >>>>>>> Janko >>>>>>> >>>>>>> [[alternative HTML version deleted]] >>>>>>> >>>>>>> ______________________________________________ >>>>>>> r-h...@r-project.org mailing list >>>>>>> https://stat.ethz.ch/mailman/listinfo/r-help >>>>>>> PLEASE do read the posting guide >>>>>>> http://www.R-project.org/posting-guide.html >>>>>>> and provide commented, minimal, self-contained, reproducible code. >>>>>> >>>>>> >>>> >>>> >>> >>> ______________________________________________ >>> R-devel@r-project.org mailing list >>> https://stat.ethz.ch/mailman/listinfo/r-devel >>> >> >> >> -- >> ------------------------------------------------------------------------ >> >> *Janko Thyson* >> janko.thy...@ku-eichstaett.de <mailto:janko.thy...@ku-eichstaett.de> >> >> Catholic University of Eichstätt-Ingolstadt >> Ingolstadt School of Management >> Statistics and Quantitative Methods >> Auf der Schanz 49 >> D-85049 Ingolstadt >> >> www.wfi.edu/lsqm <http://www.wfi.edu/lsqm> >> >> Fon: +49 841 937-1923 >> Fax: +49 841 937-1965 >> >> This e-mail and any attachment is for authorized use by the intended >> recipient(s) only. It may contain proprietary material, confidential >> information and/or be subject to legal privilege. It should not be >> copied, disclosed to, retained or used by any other party. >> If you are not an intended recipient then please promptly delete this >> e-mail and any attachment and all copies and inform the sender. >> -- ------------------------------------------------------------------------ *Janko Thyson* janko.thy...@googlemail.com <mailto:janko.thy...@googlemail.com> Jesuitenstraße 3 D-85049 Ingolstadt Mobile: +49 (0)176 83294257 This e-mail and any attachment is for authorized use by the intended recipient(s) only. It may contain proprietary material, confidential information and/or be subject to legal privilege. It should not be copied, disclosed to, retained or used by any other party. If you are not an intended recipient then please promptly delete this e-mail and any attachment and all copies and inform the sender. [[alternative HTML version deleted]]
______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel