'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?



Solution 1:[1]

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]]

Solution 2:[2]

What's wrong with either of the following?

eval(as.name(x))

eval(as.symbol(x))

Solution 3:[3]

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.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Greg Snow
Solution 2 Marek
Solution 3 Rui Vieira