From: Jochen Einbeck <jochen.einbeck_at_nuigalway.ie>

Date: Thu 04 Aug 2005 - 00:33:14 EST

glm1<-glm(formula=formula,data=data, weights=w) .....

}

*>
*

*>
*

> That contradicts 1)!

*>
*

*>
*

>

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Thu Aug 04 00:38:22 2005

Date: Thu 04 Aug 2005 - 00:33:14 EST

Thanks. It is now working as I wanted, if I use (simplified)

test<-function(formula, data, w){ wname <- deparse(substitute(w)) w <- if(wname %in% names(data)) data[[wname]] else get(wname, .GlobalEnv)data$w<-w

glm1<-glm(formula=formula,data=data, weights=w) .....

}

What I was looking for in 2) was a more elegant way (than setting data$w<-w) to make w available to the glm function.

Prof Brian Ripley wrote:

> I don't think that is the best way to do what I guess you intended.

*> Try something like
**>
**> test <- function(formula, data , weights)
**> {
**> Call <- match.call()
**> Call[[1]] <- as.name("glm")
**> Call$family <- quote(poisson)
**> glm1 <- eval.parent(Call)
**> ....
**> }
**>
**> which is probably giving the scoping that you want.
**>
**> You could do what you ask for at 1) by something like
**>
**> wname <- deparse(substitute(w))
**> w <- if(wname %in% names(data)) data[[wname]] else get(wname,
**> .GlobalEnv)
**>
**> and for 2) by replacing .GlobalEnv by an expression constructed by
**> calls to environment() (I don't know exactly what you intended here).
**>
**> On Tue, 2 Aug 2005, Jochen Einbeck wrote:
**>
*

>> Dear members, >> >> assume given a function of type >> >> test<-function(formula, data , w){ >> ...... >> glm1<-glm(formula, family=poisson, data=data, weights=w) >> ...... >> } >> >> and a simple example data frame as >> >> test.frame<-data.frame(x=1:10,y=(1:10)*2,a=(1:10)^3). >> >> Let us now execute >> >> test(y ~ x, test.frame, a ) >> >> My question is: What do I have to insert at the first occurance of ..... >> in the test function to ensure that >> >> 1) 'a' is read from the data frame (and is only read from the global >> environment if and only if 'a' is not found in the data frame) >> 2) glm finds w in in the local environment of the function 'test'

> That contradicts 1)!

>> The question is obviously related to Fernando's problem with >> 'Defining a "local" function' some months ago, though the discussion >> there does not solve the questions above.

>

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Thu Aug 04 00:38:22 2005

*
This archive was generated by hypermail 2.1.8
: Sun 23 Oct 2005 - 15:02:31 EST
*