[R] lattice: calling functions

Duncan Murdoch murdoch at stats.uwo.ca
Tue Feb 14 15:18:12 CET 2006


On 2/14/2006 8:56 AM, Wolfram Fischer wrote:
> I defined three functions:
> 
>> fun0 <- function( x=1:5, y=1:5, ... ) xyplot( y ~ x, ... )
> 
>> fun1 <- function( x=1:5, y=1:5, ... ) fun2( y ~ x, ... )
>> fun2 <- function( ... ) xyplot( ... )
> 
> The call of fun0() works as expected.
> 
> The call of fun1() causes the following error:
>     'Error in eval(expr, envir, enclos) : object "y" not found'
> 
> How should I define fun2 to avoid the error?

fun2 is fine, it's fun1 that has problems.  It is passing a formula 
through fun2 to xyplot without telling xyplot where to evaluate the 
arguments.  If you change it to

fun1 <- function( x=1:5, y=1:5, ... ) fun2( y ~ x, data=enviroment(), ... )

it will tell xyplot to look in the current environment at the time of 
the call, i.e. the fun1 evaluation environment where x and y live.

Duncan Murdoch




More information about the R-help mailing list