[R] Newbie question about by() -- update

david.beede@mail.doc.gov david.beede at mail.doc.gov
Tue Mar 20 19:36:29 CET 2001


Sorry about the lack of detail.  I am running R v.1.2.2.  I can recast my
question
(which I think I have partially answered) more succinctly as follows:

1.  This seems to work (note that group takes values 1,2,3,4, or 5):
 my.newfun <- function(x) myfile <- lm(award ~ ilogemp + ilogage, x)
 test.by <- by(wintemp, as.factor(wintemp$group), my.newfun)

2.  This does not work (leaving aside whether I am using ppr correctly or not!):
> my.pprfun <- function(x) mypprfile <- ppr(award ~ ilogemp + ilogage, data = x, nterms = 5,
+                max.terms = 10, optlevel = 3)
>  test.by <- by(wintemp, as.factor(wintemp$group), my.pprfun)
Error in model.frame.default(formula = award ~ ilogemp + ilogage, data = x) :
     Object "x" not found

3.  However, this does seem to work, but I don't know enough about R to explain why:
> my.pprfun <- function(x) mypprfile <- ppr(award ~ ilogemp + ilogage,
+   data = eval.parent(substitute(x),3), nterms = 5, max.terms = 10, optlevel = 3)
>  test.by <- by(wintemp, as.factor(wintemp$group), my.pprfun)

If I understand this (and p. 69 of S Programming by VR) correctly, it seems as though
I have to evaluate x three environments up the call sequence from ppr, but I don't have
to do so for lm.  I don't yet fully understand how the environments work, and I'm afraid
that only a little knowledge is dangerous!  Can anyone explain the difference between
lm and ppr in this context?
---------------

david.beede at mail.doc.gov wrote:
>
> Dear R list:
>
> I want to make separate estimates for each level of the variable "group."
> After consulting many sources I am stumped as to why the following does
not work:
>
> > wintemp <- subset(alltemp, winner==1)
> > my.ppr <- function(x)
> +   {
> +    if(nrow(x) >= 50) {
> +    pprfile <- ppr(award~ilogemp,
data=x,nterms=5,max.terms=10,optlevel=3)
> +     summary(pprfile)
> +      }
> +    }
> > test.by <- by(wintemp,as.factor(wintemp$group),my.ppr)
> Error in model.frame.default(formula = award ~ ilogemp, data = x) :
>      Object "x" not found
>
> Any help would be greatly appreciated.
> (I am sure I am misunderstanding some fundamental R concepts.)

It is hard to help, if we don't know what all those variables stand for.
I tried something similar and it worked.
What version of R are you running?

Uwe Ligges

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list