[Rd] value returned by by()
pdalgd at gmail.com
Wed Sep 15 11:29:23 CEST 2010
On Sep 15, 2010, at 10:55 , Uwe Ligges wrote:
> On 14.09.2010 20:50, Seb wrote:
>> On Tue, 14 Sep 2010 12:02:04 +0200,
>> Uwe Ligges<ligges at statistik.tu-dortmund.de> wrote:
>>> It returns a list with athe class attribut set to "by", just use: x<-
>>> by(.....) unclass(x)
>> Thanks Uwe, however, that still returns an array when using the
>> data.frame method for by():
>> R> class(unclass(with(warpbreaks, by(warpbreaks[, 1:2], tension, summary))))
>>  "array"
>> It seems as if the only way to really ensure a list:
>> R> class(lapply(unclass(with(warpbreaks, by(warpbreaks[, 1:2], tension, summary))), function(x) x))
>>  "list"
>> but it seems like a waste to call another function just to do this.
> Then you could still do
> x <- by(.....)
> attributes(x) <- NULL
Or just use c() instead of unclass(). (The root cause is that even with simplify=FALSE, tapply() will always create an array, in this case a 1d array with dim=3. The _contents_ of the array will be a list, though.)
Notice that in the relevant cases, what you get really _is_ a list, and both walks and quacks like one. E.g.
> L <- with(warpbreaks, by(warpbreaks[, 1], tension, mean, simplify=FALSE))
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Email: pd.mes at cbs.dk Priv: PDalgd at gmail.com
More information about the R-devel