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]]
Hello, Not exactly an answer but here it goes. If you use the formula interface the names will be retained. 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 mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >
On Fri, Mar 23, 2018 at 6:43 PM, Rui Barradas <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 mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel >> > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel