[R] replace an expression with its value, or read macros

Thomas Lumley tlumley at uw.edu
Fri Apr 8 01:53:33 CEST 2011


On Fri, Apr 8, 2011 at 11:45 AM, Franklin Tamborello II
<Franklin.Tamborello at uth.tmc.edu> wrote:
> I know my subject line seems odd, but I want to replace an expression—such as a variable—with its value. For example, I want to paste() some strings together, assign the result to a variable s, then use the value of s as a variable to hold another value. Something like this:
>
> import_subjects <- function (start, iterations) {
> for (i in 1:iterations) { # iterate from start to end
> s <- paste("s", i, sep="") # make the data.frame's name
> fn <- paste(i, ".txt", sep="") # make the filename
> s <- read.delim(fn, header = FALSE) # now put it all together
> # …except that I don't want to reassign s, I want to evaluate it and make its value a variable with its own value.
> }
> }
>
> If this were Lisp I'd use backquotes (or "backticks", as some say) and commas—examples of read macros—to do this, but I can't find anything analogous for R. >How might I accomplish this in R?

As a first note, most people who ask this sort of question would be
better off putting the sets of data into a single list rather than
named variables.

However, it is possible to do what you want.  One approach is to use
assign().  Another is to use bquote(), which is related to the Lisp
backquote macro: eval(bquote(.(s) <- read.delim(.(fn),header=FALSE)),
where .() is analogous to comma.

      -thomas

-- 
Thomas Lumley
Professor of Biostatistics
University of Auckland



More information about the R-help mailing list