Zhang18
Zhang18

Reputation: 4930

Access variable value where the name of variable is stored in a string

Similar questions have been raised for other languages: C, sql, java, etc.

But I'm trying to do this in R.

I have:

ret_series <- c(1, 2, 3)
x <- "ret_series"

How do I get (1, 2, 3) by calling some function / manipulation on x, without direct mentioning of ret_series?

Upvotes: 74

Views: 78811

Answers (4)

mm441
mm441

Reputation: 495

Note that some of the examples above wouldn't work for a data.frame.

For instance, given

x <- data.frame(a=seq(1,5))

get("x$a") would not give you x$a.

Upvotes: 3

RomanM
RomanM

Reputation: 109

What's wrong with either of the following?

eval(as.name(x))

eval(as.symbol(x))

Upvotes: 10

Greg Snow
Greg Snow

Reputation: 49640

For a one off use, the get function works (as has been mentioned), but it does not scale well to larger projects. it is better to store you data in lists or environments, then use [[ to access the individual elements:

mydata <- list( ret_series=c(1,2,3) )
x <- 'ret_series'

mydata[[x]]

Upvotes: 19

Joshua Ulrich
Joshua Ulrich

Reputation: 176648

You provided the answer in your question. Try get.

> get(x)
[1] 1 2 3

Upvotes: 105

Related Questions