[R] Odp: Aggregation and the meaning of class
Chip Barnaby
cbarnaby at wrightsoft.com
Mon Jun 2 16:14:32 CEST 2008
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
More information about the R-help
mailing list