[R] get() in sapply() in with()
tlumley at u.washington.edu
Thu Aug 3 16:33:47 CEST 2006
On Thu, 3 Aug 2006, Heinz Tuechler wrote:
> Dear All,
> applying some function within a with() function I wanted to use also
> sapply() and get() to form a data.frame, but did not succede.
> Below is a simplified example.
> It is possible to use sapply() within a with() function, it is also
> possible to use get() within a with() function, but when I try to use get
> within sapply within with I arrive at "Error in get(x, envir, mode,
> inherits) : variable "v5" was not found".
> Is there a solution?
This isn't what you want to hear, but the solution is probably to not use
get(). How to not use get() will depend on what your problem really is.
> ## example
> df1 <- data.frame(v5=16:20, v6=21:25, v7=I(letters[16:20]), v8=letters[16:20])
> with(df1, sapply(c('v5', 'v6'), get) ) ## Error, see next line
> ## Error in get(x, envir, mode, inherits) : variable "v5" was not found
get() looks in the environment it was called from, which is the
environment inside lapply(), whose parent is the environment of
the base package. There is no "v5" there.
> with(df1, sapply(list(v5, v6), mean) ) # does work
This works because list(v5,v6) is evaluated in df1.
> with(df1, get('v5') ) # does work
This works because get() looks in the environment it was called from,
which is df1.
Thomas Lumley Assoc. Professor, Biostatistics
tlumley at u.washington.edu University of Washington, Seattle
More information about the R-help