[R] lm looking for weights outside of the user-defined function

Dimitri Liakhovitski dimitri.liakhovitski at gmail.com
Fri Oct 22 15:01:26 CEST 2010


Dear R'ers,

I am fighting with a problem that is driving me crazy. I use "lm" in
my user-defined function, but it seems to be looking for weights
outside of my function's environment:

### Generating example data:
x<-data.frame(y=rnorm(100,0,1),a=rnorm(100,1,1),b=rnorm(100,2,1))
myweights<-runif(100)
data.for.regression<-x[1:3]

### Creating function "weighted.reg":
weighted.reg=function(formula, MyData, filename,WeightsVector)
{
	print(dim(MyData))
	print(filename)
	print(length(WeightsVector))
	regr.f<-lm(formula,MyData,weights=WeightsVector,na.action=na.omit)
	results<-as.data.frame(round(summary(regr.f)$coeff,3))
	write.csv(results,file=filename)
	return(results)
}

### Running "weighted.reg" with my data:
reg2<-weighted.reg(y~., MyData=x, WeightsVector=myweights, filename="TEST.csv")


I get an error: Error in eval(expr, envir, enclos) : object
'WeightsVector' not found
Notice, that the function correctly prints length(WeightsVector). But
it looks like "lm" is looking for weights (in the 4th line of the
function) OUTSIDE the function and does not see WeightsVector.
Why is it looking outside the function for the object that has just
been defined inside the function?


Thank you very much!

-- 
Dimitri Liakhovitski
Ninah Consulting
www.ninah.com



More information about the R-help mailing list