>>>>> Michael Lawrence <lawrence.michael at gene.com> >>>>> on Tue, 30 Jan 2018 10:37:38 -0800 writes:> I agree that it would make sense for the object to have c("by", "list") as > its class attribute, since the object is known to behave as a list. Well, but that (list behavior) applies to most non-simple S3 classed objects, say "data.frame", say "lm" to start with real basic ones. The later part of the discussion, seems more relevant to me. Adding "list" to the class attribute seems as wrong to me as e.g. adding "double" to "Date" or "POSIXct" (and many more such cases). For the present case, we should stay with focusing on is.list() being true after as.list() .. the same we would do with as.numeric() and is.numeric(). Martin > However, it would may be too disruptive to make this change at this point. > Hard to predict. > Michael > On Mon, Jan 29, 2018 at 5:00 PM, Dario Strbenac <dstr7320 at uni.sydney.edu.au> > wrote: >> Good day, >> >> I'd like to suggest the addition of an as.list method for a by object that >> actually returns a list of class "list". This would make it safer to do >> type-checking, because is.list also returns TRUE for a data.frame variable >> and using class(result) == "list" is an alternative that only returns TRUE >> for lists. It's also confusing initially that >> >> > class(x) >> [1] "by" >> > is.list(x) >> [1] TRUE >> >> since there's no explicit class definition for "by" and no mention if it >> has any superclasses. >> >> -------------------------------------- >> Dario Strbenac >> University of Sydney >> Camperdown NSW 2050 >> Australia >> >> ______________________________________________ >> R-devel at r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel >> >> > [[alternative HTML version deleted]] > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel
On Thu, Feb 1, 2018 at 1:21 AM, Martin Maechler <maechler at stat.math.ethz.ch> wrote:> >>>>> Michael Lawrence <lawrence.michael at gene.com> > >>>>> on Tue, 30 Jan 2018 10:37:38 -0800 writes: > > > I agree that it would make sense for the object to have c("by", > "list") as > > its class attribute, since the object is known to behave as a list. > > Well, but that (list behavior) applies to most non-simple S3 > classed objects, say "data.frame", say "lm" to start with real basic ones. > > The later part of the discussion, seems more relevant to me. > Adding "list" to the class attribute seems as wrong to me as > e.g. adding "double" to "Date" or "POSIXct" (and many more such cases). > >There's a distinction though. Date and POSIXct should not really behave as double values (an implementation detail), but "by" is expected to behave as a list (when it is one). For the present case, we should stay with focusing on is.list()> being true after as.list() .. the same we would do with > as.numeric() and is.numeric(). > > Martin > > > However, it would may be too disruptive to make this change at this > point. > > Hard to predict. > > > Michael > > > On Mon, Jan 29, 2018 at 5:00 PM, Dario Strbenac < > dstr7320 at uni.sydney.edu.au> > > wrote: > > >> Good day, > >> > >> I'd like to suggest the addition of an as.list method for a by > object that > >> actually returns a list of class "list". This would make it safer > to do > >> type-checking, because is.list also returns TRUE for a data.frame > variable > >> and using class(result) == "list" is an alternative that only > returns TRUE > >> for lists. It's also confusing initially that > >> > >> > class(x) > >> [1] "by" > >> > is.list(x) > >> [1] TRUE > >> > >> since there's no explicit class definition for "by" and no mention > if it > >> has any superclasses. > >> > >> -------------------------------------- > >> Dario Strbenac > >> University of Sydney > >> Camperdown NSW 2050 > >> Australia > >> > >> ______________________________________________ > >> R-devel at r-project.org mailing list > >> https://stat.ethz.ch/mailman/listinfo/r-devel > >> > >> > > > [[alternative HTML version deleted]] > > > ______________________________________________ > > R-devel at r-project.org mailing list > > https://stat.ethz.ch/mailman/listinfo/r-devel > >[[alternative HTML version deleted]]
>>>>> Michael Lawrence <lawrence.michael at gene.com> >>>>> on Thu, 1 Feb 2018 06:12:20 -0800 writes:> On Thu, Feb 1, 2018 at 1:21 AM, Martin Maechler <maechler at stat.math.ethz.ch> > wrote: >> >>>>> Michael Lawrence <lawrence.michael at gene.com> >> >>>>> on Tue, 30 Jan 2018 10:37:38 -0800 writes: >> >> > I agree that it would make sense for the object to have c("by", >> "list") as >> > its class attribute, since the object is known to behave as a list. >> >> Well, but that (list behavior) applies to most non-simple S3 >> classed objects, say "data.frame", say "lm" to start with real basic ones. >> >> The later part of the discussion, seems more relevant to me. >> Adding "list" to the class attribute seems as wrong to me as >> e.g. adding "double" to "Date" or "POSIXct" (and many more such cases). >> >> > There's a distinction though. Date and POSIXct should not really behave as > double values (an implementation detail), but "by" is expected to behave as > a list (when it is one). yes, you are right.... As I'm "never"(*) using by(), I'm glad to leave this issue to you. Martin --- *) Never .... [James Bond, 1983] > For the present case, we should stay with focusing on is.list() >> being true after as.list() .. the same we would do with >> as.numeric() and is.numeric(). >> >> Martin >> >> > However, it would may be too disruptive to make this change at this >> point. >> > Hard to predict. >> >> > Michael >> >> > On Mon, Jan 29, 2018 at 5:00 PM, Dario Strbenac < >> dstr7320 at uni.sydney.edu.au> >> > wrote: >> >> >> Good day, >> >> >> >> I'd like to suggest the addition of an as.list method for a by >> object that >> >> actually returns a list of class "list". This would make it safer >> to do >> >> type-checking, because is.list also returns TRUE for a data.frame >> variable >> >> and using class(result) == "list" is an alternative that only >> returns TRUE >> >> for lists. It's also confusing initially that >> >> >> >> > class(x) >> >> [1] "by" >> >> > is.list(x) >> >> [1] TRUE >> >> >> >> since there's no explicit class definition for "by" and no mention >> if it >> >> has any superclasses. >> >> >> >> -------------------------------------- >> >> Dario Strbenac >> >> University of Sydney >> >> Camperdown NSW 2050 >> >> Australia >> >> >> >> ______________________________________________ >> >> R-devel at r-project.org mailing list >> >> https://stat.ethz.ch/mailman/listinfo/r-devel >> >> >> >> >> >> > [[alternative HTML version deleted]] >> >> > ______________________________________________ >> > R-devel at r-project.org mailing list >> > https://stat.ethz.ch/mailman/listinfo/r-devel >> >> > [[alternative HTML version deleted]]