[R] lapply not reading arguments from the correct environment

jiho jo.irisson at gmail.com
Fri May 18 16:41:46 CEST 2007


Hello,

I am facing a problem with lapply which I ''''think''' may be a bug.  
This is the most basic function in which I can reproduce it:

myfun <- function()
{
	foo = data.frame(1:10,10:1)
	foos = list(foo)
	fooCollumn=2
	cFoo = lapply(foos,subset,select=fooCollumn)
	return(cFoo)
}

I am building a list of dataframes, in each of which I want to keep  
only column 2 (obviously I would not do it this way in real life but  
that's just to demonstrate the bug).
If I execute the commands inline it works but if I clean my  
environment, then define the function and then execute:
	> myfun()
I get this error:
	Error in eval(expr, envir, enclos) : object "fooCollumn" not found
while fooCollumn is defined, in the function, right before lapply. In  
addition, if I define it outside the function and then execute the  
function:
	> fooCollumn=1
	> myfun()
it works but uses the value defined in the general environment and  
not the one defined in the function.
This is with R 2.5.0 on both OS X and Linux (Fedora Core 6)
What did I do wrong? Is this indeed a bug? An intended behavior?
Thanks in advance.

JiHO
---
http://jo.irisson.free.fr/



More information about the R-help mailing list