[R] scoping problems?
Ramon Diaz-Uriarte
rdiazuri at students.wisc.edu
Mon May 29 19:05:55 CEST 2000
Dear All,
This is driving me nuts; I think it should be very simple (and I am sure the
answer is in front of me somewhere in ch. 3 of "S programming") but I just don't
get it.
It seems that "weights" never gets passed on to the second funciton as it
should:
myf1<-function(formula,data,weights=NULL,max.num=0,exclude.tips=NULL){
myf2<-function(formula,data,weights){
mf <- match.call()
mf[[1]] <- as.name("model.frame")
print("we get up to here")
mf<-eval(mf,sys.frame(sys.parent())) #this is the culprit doesn't work
w <- model.weights(mf)
# do several things here; for simplicity just
print(w)
}
# the next two lines exclude certain data points
if(!is.null(exclude.tips)) data<-data[match(data$Tips,exclude.tips,nomatch=0)==0,]
if(max.num) data<-data[data$sim.counter<max.num+1,]
myf2(formula,data,weights=weights)
}
The following is an example:
>data.ex2<-data.frame(sim.counter=c(rep(0,3),rep(1,3)),Tips=rep(c("a","b","c"),2),y=rnorm(6),x1=rnorm(6),x2=rnorm(6))
> myf1(y~x1,data.ex2,weights=x2)
[1] "we get up to here"
Error in eval(expr, envir, enclos) : Object "x2" not found
Why doesn't it find x2? Isn't x2 right there? Note that if I define myf2 as a
function in the global env. and I call it, it works fine.
What I am doing wrong?
Thanks,
Ramon
P.S. In case it matters, I am using R 1.0.1 (under Linux)
--
Ramón Díaz-Uriarte
Dept. Zoology and Statistics
University of Wisconsin-Madison
Madison, WI 53706-1381
email: rdiazuri at students.wisc.edu
phone: 608-238-8041
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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