1

I would like to define a string

string<- "modelName"

That could be used to name an object later. Something like

paste0(string) <- mtcars
cat(string) <- mtcars
print(string) <- mtcars
get(string) <- mtcars

The needed result is the dataset called "modelName". None of the examples above work, obviously.

Question:

How can create one create an object which name is defined by the sourced string?

andrey
  • 2,029
  • 2
  • 18
  • 23
  • 2
    You can use `assign`. So `assign(string, mtcars)`. – jdharrison Jul 09 '14 at 12:45
  • when I do (a<- "dsName" b<- 12 assign(a)<- b+2 ) it gives me an error " Error in assign(a) <- b + 2 : could not find function "assign<-" " am I doing it right? – andrey Jul 09 '14 at 12:48
  • 1
    Note that this is FAQ 7.21, the most important part of which is the end where it says not to do this (as also pointed out the answer by @jdharrison) – Greg Snow Jul 09 '14 at 16:14

1 Answers1

2

As @Spacedman notes this is not generally the way things are done but you can use assign

string<- "modelName"

assign(string, mtcars)

> head(modelName)
                   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 general it may be perferable to use sometthing like a list:

x <- list()
x[[string]] <- mtcars
> head(x$modelName)
                   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
jdharrison
  • 30,085
  • 4
  • 77
  • 89