string - How to use argument of a function as name of variable? -


i have feeling trivial, , apologize asking such easy questions, appreciate following problem: have function requires 2 arguments:

myfun <- function(fm, name){   ...  } 

the data frame used can via dat <- eval(fm$call$data) inside function. inside dat, there variable name identical second argument, i.e. there variable dat$name (note second argument of function not include reference dataframe, i.e. name not equal dat$name name) , use variable.

q: how can that?

concrete example: following serves example:

  air <- data(airquality)   fm <- lm(ozone ~ solar.r, data=airquality)   myfun <- function(fm, name){   df <- eval(fm$call$data)   name[1:5]   }    myfun(fm, temp) 

the purpose of function show first 5 elements of variable name in dataframe has been used fitting fm. however, name not recognized variable in corresponding data frame. neither wrapping with(df, ...), df$name or equivalent solutions trick. how work?

edit: have played around bit further still not working. thought should work after inspired of comments:

  myfun <- function(fm, name){   df <- as.character(fm$call$data)   varname <- deparse(substitute(name))   d1 <- paste(df, "$", sep="")   d2 <- paste(d1, varname, sep="")   get(d2)[1:5]   }    myfun(fm, temp) 

this produces character string called airquality$temp, following error: error in get(d2): object 'airquality$temp' not found. hoping constructing string gives me name of variable including data frame access using get, still not work... :(

using example,

air <- data(airquality) fm <- lm(ozone ~ solar.r, data=airquality)  myfun <- function(fm, name){   dn <- fm$call[['data']]   varname <- deparse(substitute(name))   get(as.character(dn),envir=.globalenv)[varname] }  myfun(fm, temp) 

Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

keyboard - C++ GetAsyncKeyState alternative -

android - java.net.UnknownHostException(Unable to resolve host “URL”: No address associated with hostname) -