2

I'm trying to assign something to the output of Sys.Date(). For example, say I want to name the object with today's date:

format(Sys.Date(), "%b%d") <- mtcars

I get the error:
invalid (NULL) left side of assignment.

I tried:
eval(parse(text = format(Sys.Date(), "%b%d"))) <- mtcars

Gets the same error msg. What am I missing / is there a solution?

4
  • 1
    Why do you want to do this? Having data stored in the variable name itself is usually a bad idea in R. It would be better if you need to generate names dynamically to use a named list and avoid the eval() and assign() functions because they create unnecessary overhead. Commented Sep 11, 2020 at 21:59
  • I'm basically timestamping dataframes that I'm working on - I name them manually now which gets tedious the more what-ifs I want to run. I can see the value of holding them in a list, less clutter for one, but how would I add a new element to a dynamically named slot in the list? I have list x with elements Sep03 and Sep09 - how would I add a dynamically named element Sep11 to x? Commented Sep 12, 2020 at 3:08
  • You can assign with any string value like x[["Sep11"]] <- mtcars or a function that returns a string value x[[format(Sys.Date(), "%b%d")]] <- mtcars. Then you'll have all the values nicely stored in x and you can get at them with x[["Sep11"]] or x$Sep11 or even apply a function to each element in the list. Commented Sep 12, 2020 at 3:15
  • @MrFlick Assigning to function output in a named list worked and I see myself using it. My question was about assigning in the global environment however, so I will leave akrun's as the accepted answer. Hive it off as a separate answer for other people to find? Guessing SO will weight answers over comments. Commented Sep 12, 2020 at 18:42

1 Answer 1

1

We can use assign

assign(format(Sys.Date(), "%b%d"), mtcars)

head(Sep11)
#                    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
Sign up to request clarification or add additional context in comments.

1 Comment

Thank you! I did try assign first but simply wrapped format() in it and got the same error.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.