That worked! Thanks for the explanation. On Wed, Sep 18, 2019 at 10:06 AM Duncan Murdoch <murdoch.dun...@gmail.com> wrote: > > On 18/09/2019 8:43 a.m., Huzefa Khalil wrote: > > Hello R-users, > > > > I have been running a script which produces objects based on the > > column names of a data.frame. The column names are of the form CB_1-1, > > CB_1-2, etc. Now this calculation was rather long and memory > > intensive, so I would rather not have to do it again after fixing the > > column names using "make.names". As a consequence, I am left with a > > bunch of R objects with `-` in the name. > > Accessing them is proving challenging and any help would be appreciated. > > > > Reproducible example: > > `cb_1-2` <- "hello world" > > t <- "cb_1-2" > > t <- as.name(t) > > t <- eval(parse(text = t)) > > > > Error in eval(parse(text = t)) : object 'cb_1' not found > > After t <- as.name(t), you already have language: no need to parse it > again. So > > eval(t) > > works. If you have more complicated expressions, use call() to set them > ụp. For example, call("paste0", t, "!") evaluates to > > paste0(`cb_1-2`, "!") > > and evaluating that expression via > > eval(call("paste0", t, "!")) > > gives > > [1] "hello world!" > > Don't go back and forth between language objects and text > representations of them, because it's hard to do that without > introducing changes. In other words, don't use eval(parse()). > > Duncan Murdoch
______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.