From lawrence.michael at gene.com  Thu Feb  1 15:12:20 2018
From: lawrence.michael at gene.com (Michael Lawrence)
Date: Thu, 1 Feb 2018 06:12:20 -0800
Subject: [Rd] as.list method for by Objects
In-Reply-To: <23154.56335.356144.896852@stat.math.ethz.ch>
References: <SY3PR01MB07474F9CEBBC61FD2A152E58CDE40@SY3PR01MB0747.ausprd01.prod.outlook.com>
 <CAOQ5NyeqQCKRKEb6BC8PCV=EojhmjRvqyvkona0hx6mZP8uq0g@mail.gmail.com>
 <23154.56335.356144.896852@stat.math.ethz.ch>
Message-ID: <CAOQ5Nye7Ug_dmzc-75wCQyVarn1=L9Q71mRm5vY97njFpoUYmg@mail.gmail.com>

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]]



[Rd] as.list method for by Objects
Michael Lawrence