[R] Why mean is not working in by?

Bert Gunter bgunter.4567 at gmail.com
Wed Dec 9 00:19:02 CET 2015


Sarah:

Note that (as I read them) aggregate() and by() work differently on
data frames. aggregate() computes FUN column by column while by()
feeds the whole (subset) data frame to FUN.

If I am wrong about this, I would greatly appreciate being corrected.

Cheers,
Bert




Bert Gunter

"Data is not information. Information is not knowledge. And knowledge
is certainly not wisdom."
   -- Clifford Stoll


On Tue, Dec 8, 2015 at 3:09 PM, Bert Gunter <bgunter.4567 at gmail.com> wrote:
> Because you are using by() incorrectly.
>
> "A data frame is split by row into **data frames**  subsetted by the
> values of one or more factors, and function FUN is applied to each
> subset in turn."
>
> So your FUN is applied to a subset of the data frame (which is also a
> list). Note that sum, min, and max have  "..." as their initial
> arguments and so use all the columns in the data frame of each subset
> for .... var() takes the covariance matrix of the several columns and
> summary.data.frame summarizes each column. mean() and sd() must be fed
> a numeric vector as their first argument, which a data frame is not --
> ergo the error.
>
> Cheers,
> Bert
>
>
> Bert Gunter
>
> "Data is not information. Information is not knowledge. And knowledge
> is certainly not wisdom."
>    -- Clifford Stoll
>
>
> On Tue, Dec 8, 2015 at 2:30 PM, Dimitri Liakhovitski
> <dimitri.liakhovitski at gmail.com> wrote:
>> Hello!
>> Could you please explain why the first 5 lines work but the last 2 lines don't?
>> Thank you!
>>
>> by(data = iris[myvars], INDICES = iris["Species"], FUN = summary)
>> by(data = iris[myvars], INDICES = iris["Species"], FUN = sum)
>> by(data = iris[myvars], INDICES = iris["Species"], FUN = var)
>> by(data = iris[myvars], INDICES = iris["Species"], FUN = max)
>> by(data = iris[myvars], INDICES = iris["Species"], FUN = min)
>>
>> by(data = iris[myvars], INDICES = iris["Species"], FUN = sd)
>> by(data = iris[myvars], INDICES = iris["Species"], FUN = mean)
>>
>> --
>> Dimitri Liakhovitski
>>
>> ______________________________________________
>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list