From rpruim at calvin.edu  Sat Mar 24 00:20:39 2018
From: rpruim at calvin.edu (Randall Pruim)
Date: Fri, 23 Mar 2018 23:20:39 +0000
Subject: [Rd] aggregate() naming -- bug or feature
In-Reply-To: <CA+vqiLHze0icMj=M8RL7TtEXWdP7QUkMYNpimCn=6b_Dfv=_yA@mail.gmail.com>
References: <9187C1DA-5061-4ABD-9D7C-D536BB134BD6@calvin.edu>
 <031f02b9-a6eb-cc2b-7c7b-286dc5b7bf68@sapo.pt>
 <CA+vqiLHze0icMj=M8RL7TtEXWdP7QUkMYNpimCn=6b_Dfv=_yA@mail.gmail.com>
Message-ID: <892793DF-BA84-4EF9-8C8D-AC6503250801@calvin.edu>


Thanks.

I?m aware of the other syntax.  My example was just to illustrate the issue minimally, not to indicate how I am using aggregate().  In my application, aggregate() will be called within another function, and the information passed to aggregate() is columns of a matrix returned by model.frame().

For now, I?ve written by own local version of aggregate() with a few tweaks to retain the names I want.

But my question remains: Is this a bug or a feature?

?rjp


On Mar 23, 2018, at 6:57 PM, Ista Zahn <istazahn at gmail.com<mailto:istazahn at gmail.com>> wrote:

On Fri, Mar 23, 2018 at 6:43 PM, Rui Barradas <ruipbarradas at sapo.pt<mailto:ruipbarradas at sapo.pt>> wrote:
Hello,

Not exactly an answer but here it goes.
If you use the formula interface the names will be retained.

Also if you pass named arguments:

aggregate(iris["Sepal.Length"], by = iris["Species"], FUN = foo)
#      Species Sepal.Length
# 1     setosa        5.006
# 2 versicolor        5.936
# 3  virginica        6.588

If fact, this
is even better than those names assigned by bar.


aggregate(Sepal.Length ~ Species, data = iris, FUN = foo)
#     Species Sepal.Length
#1     setosa        5.006
#2 versicolor        5.936
#3  virginica        6.588


Hope this helps,

Rui Barradas


On 3/23/2018 1:29 PM, Randall Pruim wrote:

In the examples below, the first loses the name attached by foo(), the
second retains names attached by bar().  Is this an intentional difference?
I?d prefer that the names be retained in both cases.

foo <- function(x) { c(mean = base::mean(x)) }
bar <- function(x) { c(mean = base::mean(x), sd = stats::sd(x))}
aggregate(iris$Sepal.Length, by = list(iris$Species), FUN = foo)
#>      Group.1     x
#> 1     setosa 5.006
#> 2 versicolor 5.936
#> 3  virginica 6.588
aggregate(iris$Sepal.Length, by = list(iris$Species), FUN = bar)
#>      Group.1    x.mean      x.sd
#> 1     setosa 5.0060000 0.3524897
#> 2 versicolor 5.9360000 0.5161711
#> 3  virginica 6.5880000 0.6358796

?rjp


       [[alternative HTML version deleted]]

______________________________________________
R-devel at r-project.org<mailto:R-devel at r-project.org> mailing list
https://urldefense.proofpoint.com/v2/url?u=https-3A__stat.ethz.ch_mailman_listinfo_r-2Ddevel&d=DwIFaQ&c=4rZ6NPIETe-LE5i2KBR4rw&r=S6U-baLhvGcJ7iUQX_KZ6K2om1TTOeUI_-mjRpTrm00&m=wR-DoggMzZ5fX3PJlgbTQe2njoPJ03CTiimaCc_OHe0&s=rehyeJZBteb4wYmKFPvE74AzY4Nm__6Cm4h2q4xfXnk&e=


______________________________________________
R-devel at r-project.org<mailto:R-devel at r-project.org> mailing list
https://urldefense.proofpoint.com/v2/url?u=https-3A__stat.ethz.ch_mailman_listinfo_r-2Ddevel&d=DwIFaQ&c=4rZ6NPIETe-LE5i2KBR4rw&r=S6U-baLhvGcJ7iUQX_KZ6K2om1TTOeUI_-mjRpTrm00&m=wR-DoggMzZ5fX3PJlgbTQe2njoPJ03CTiimaCc_OHe0&s=rehyeJZBteb4wYmKFPvE74AzY4Nm__6Cm4h2q4xfXnk&e=


	[[alternative HTML version deleted]]



[Rd] aggregate() naming -- bug or feature
Randall Pruim