Re: [R] Odp: Aggregation and the meaning of class

From: Chip Barnaby <cbarnaby_at_wrightsoft.com>
Date: Mon, 02 Jun 2008 10:14:32 -0400

Hi Petr,
Thanks for your reply. See below.

At 05:58 AM 6/2/2008, Petr PIKAL wrote:
>Hi

>
>I did not see any response yet so I try a kick. Each object in R has some
>attributes which can be revealed by
>
>attributes(object)
>
>Some of them are useful for methods and tell R how to handle particular
>object with a method. There are other options how to evaluate your object

>e.g. str, typeof, mode. If you went through intro manual you could find
>that there are different types of objects like vectors, matrices,
>data.frames, arrays, and lists. And probably some others.
>
>Output from by is list or array and you can handle such objects in many
>ways.

I understand all this in general. I am a C++ programmer with decades of experience, so I fully understand object-oriented concepts.

My question is: How does one learn the specifics? For the case at hand, what are the specialized methods associated with class "by"? Are there clever things I can do with it? Is there documentation for class "by"? What are the browsing/exploring approaches one might use to learn about that class?

So far, the main approach I have is interactive experimentation, yielding slow knowledge accretion. Is there anything more efficient? I have a moderate pile of R books, they are helpful, but obviously don't cover every detail of every situation.

>BTW it is hard to tell what is desired result is as we do not have D60.

Agreed and I could supply some example data if you want.

I speculated that experienced users could answer my question on formal grounds, but perhaps this speaks to my general issue: questions like this aren't easily answered without running experiments.

At the moment, my code "seems to be working." I don't find that very reassuring. I may have to get used to an "R culture" that is different from my prior world.

>Eg. when I do
>
> > WM = by( D60, D60[ "KeyProfA"], FUN=function(x) weighted.mean( x$IAC,
>x$Wt))
>Error in by(D60, D60["KeyProfA"], FUN = function(x) weighted.mean(x$IAC, :
>
> object "D60" not found
>
>I get an error.
>
>Better then using by is maybe to use ave which retains number of rows, but
>I am not sure if it can be adopted to weighted mean.
>
>Regards
>
>Petr
>petr.pikal_at_precheza.cz
>724008364, 581252140, 581252257
>
>
>r-help-bounces_at_r-project.org napsal dne 30.05.2008 16:00:50:
>
> > Dear R-ers,
> >
> > My aggregation saga continues.
> >
> > Using the following sequence, I can calculate any statistic for row
> > groups and merge the result back to all associated rows ...
> >
> > > WM = by( D60, D60[ "KeyProfA"], FUN=function(x) weighted.mean( x$IAC,
>x$Wt))
> >
> > > D60$IAC.WM = as.numeric( WM[ D60$KeyProfA])
> >
> > > class( WM)
> > [1] "by"
> >
> > Questions ...
> >
> > 1) Is this a reasonable way to obtain the desired result?
> >
> > 2) What can one glean by knowing the class of WM ("by")? It appears
> > to me that class is a pretty shallow attribute in R ... just an
> > associated string that selects among methods in some contexts. Is
> > that really all there is to it? Is there a way to discover what
> > generic methods are aware of a given class? In other words, who
> > cares if WM is a "by" ... what does that do for me?
> >
> > In my traditional universe (C++) I can grep and discover what methods

> > are virtual, who inherits from whom, etc. In R, the documentation
> > appears silent on what is a "by" (correct me if I'm wrong). In
> > addition, I have found no way to broadly search code to learn
> > things. (Displaying single functions is useful but hardly broad.)
> >
> > How does one learn R more efficiently than randomly discovering how
> > to avoid error messages? (For example, I now know that a "by" cannot
> > be coerced into a data.frame (although it seems to me that such a
> > conversion could be usefully defined), so now I don't hit myself on
> > the head with that particular hammer.)
> >
> > Chip Barnaby
> >
> >
> >
> >
> >
> >
> > ---------------------------------------------------------
> > Chip Barnaby cbarnaby_at_wrightsoft.com
> > Vice President of Research
> > Wrightsoft Corp. 781-862-8719 x118 voice
> > 131 Hartwell Ave 781-861-2058 fax
> > Lexington, MA 02421 www.wrightsoft.com
> >
> > ______________________________________________
> > R-help_at_r-project.org mailing list
> > 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.


Chip Barnaby                   cbarnaby_at_wrightsoft.com
Vice President of Research
Wrightsoft Corp.               781-862-8719 x118 voice
131 Hartwell Ave               781-861-2058 fax
Lexington, MA 02421         www.wrightsoft.com

______________________________________________
R-help_at_r-project.org mailing list
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. Received on Mon 02 Jun 2008 - 15:06:33 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Tue 03 Jun 2008 - 08:30:37 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive