'Save a dataframe name and then reference that object in subsequent code

Would like to reference a dataframe name stored in an object, such as:

dfName <- 'mydf1'
dfName <- data.frame(c(x = 5)) #want dfName to resolve to 'mydf1', not create a dataframe named 'dfName'
mydf1

Instead, I get: Error: object 'mydf1' not found

CORRECTED SCENARIO:

olddf <- data.frame(c(y = 8)) 
mydf1 <- data.frame(c(x = 5))
assign('dfName', mydf1)
dfName <- olddf #why isnt this the same as doing "mydf1 <- olddf"?

I don't want to reference an actual dataframe named "dfName", rather "mydf1".

UPDATE I have found a clunky workaround for what I wanted to do. The code is:

olddf <- data.frame(x = 8)
olddfName <- 'olddf'
newdfName <- 'mydf1'
statement <- paste(newdfName, "<-", olddfName, sep = " ")
writeLines(statement, "mycode.R")
source("mycode.R")           

Anyone have a more elegant way, especially without resorting to a write/source?



Solution 1:[1]

I am guessing you want to store multiple data.frames in a loop or similar. In that case it is much more efficient and better to store them in a named list. However, you can achieve your goal with assign

assign('mydf1', data.frame(x = 5))
mydf1
  x
1 5

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 Oliver