sully
sully

Reputation: 53

Returning Name Instead of Data

I have a data frame JPYData (content not important):

Date     Open     High      Low    Close
1514851200 112.7720 112.7765 112.7575 112.7705
1514851260 112.7705 112.7705 112.7660 112.7680

I am looping an analysis through several different currencies, and each has a similar data frame. To call them dynamically within my script, I am trying to use active.data <- sprintf("%sData", currency). In this example, my code is effectively just active.data <- "JPYData", instead of storing the data frame in active.data. I have tried coercing with as.name(sprintf("%sData", currency)), but to no avail. Any help would be much appreciated.

Thanks

Upvotes: 1

Views: 37

Answers (1)

PhillipD
PhillipD

Reputation: 1817

You can use get (see the doc) as in the following example:

mydf <- 'mtcars'   
## mtcars is a build-in dataframe we want to access by its name. 
## We assign the string to mydf.

active.data <- get(mydf)
## print the first rows on the screen for confirmation
head(active.data)

                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

In your case you would use

active.data <- get(sprintf("%sData", currency))

Upvotes: 2

Related Questions