[R] Reference variables by string in for loop
Kenn Konstabel
lebatsnok at gmail.com
Fri Apr 29 13:01:00 CEST 2011
On Fri, Apr 29, 2011 at 1:03 PM, Michael Bach <phaebz at gmail.com> wrote:
> Dear R Users,
>
> I am trying to get the following to work better:
>
> namevec <- c("one", "two", "three")
> for (name in namevec) {
> namedf <- eval(parse(text=paste(name, "_df", sep="")))
> ...
> ...
> }
>
> The rationale behind it being that I created variables with names
> one_df, two_df and three_df earlier in the same script which I want to
> reference inside the for loop. Is there a more elegant way to do this?
Yes, one elegant way to do it would be using a named list instead of
separate variables.
X <- list()
X$one_df <- "something"
X[["two_df"]] <- "something else"
NAME <- "one_df"
X[[NAME]]
NAME <- "two_df"
X[[NAME]]
#etc
# the for loop could then be: for(name in names(X)) ... or for(element in X)
Another way (not elegant but better and shorter than the eval-parse
way) is to use get. ?get
Best regards,
Kenn
More information about the R-help
mailing list