One option is:
dosomething <- function(x, data, env=parent.frame()) {
if(!missing(data)) x <- data[,deparse(substitute(x))]
temp <- x^2 + 5
return(temp)
}
On 29/02/2008, Viechtbauer Wolfgang (STAT)
<[EMAIL PROTECTED]> wrote:
> Dear All,
>
> I am working on a function that has an optional data argument, just like
> lm(). If the user sets the data argument equal to some dataframe, then the
> function should look inside the dataframe for the variables given to other
> arguments, otherwise the variables should be accessible from what I believe
> is called the parent frame from which the function was called. I looked at
> the source code for lm() (and similar functions) and the documentation of
> ?eval, but I just can't quite figure out how to make this work.
>
> So, for a simple example, suppose I want to do this with the following
> function:
>
> dosomething <- function(x, data) {
> temp <- x^2 + 5
> return(temp)
> }
>
> How does the function need to be changed, so that dosomething(somevariable,
> data=somedataframe) will find somevariable within the dataframe somedataframe
> and if dosomething(somevariable) is called, the function should find
> somevariable in the parent frame (or anywhere else in the search path)?
>
> Thanks for any help!
>
> --
> Wolfgang Viechtbauer
> Department of Methodology and Statistics
> University of Maastricht, The Netherlands
> http://www.wvbauer.com/
>
> ______________________________________________
> [email protected] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
--
Henrique Dallazuanna
Curitiba-Paraná-Brasil
25° 25' 40" S 49° 16' 22" O
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.