Sent from my phone. Please excuse my brevity.
On August 15, 2016 11:43:14 PM PDT, G.Maubach at weinwolf.de wrote:
>Hi Greg
>and all others who replied to my question,
>
>many thanks for all your answers and help. Currently I store all my
>objects in .GlobalEnv = Workspace. I am not yet familiar working with
>different environments nor did I see that this would be necessary for
>my
>analysis.
>
>Could you explain why working with different environments would be
>helpful?
>
>You suggested to read variables into lists rather than storing them in
>global variables. This sounds interesting. Could you provide an example
>of
>how to define and use this?
>
>Kind regards
>
>Georg
>
>
>
>Von: Greg Snow <538280 at gmail.com>
>An: G.Maubach at weinwolf.de,
>Kopie: r-help <r-help at r-project.org>
>Datum: 15.08.2016 20:33
>Betreff: Re: [R] Accessing an object using a string
>
>
>
>The names function is a primitive, which means that if it does not
>already do what you want, it is generally not going to be easy to
>coerce it to do it.
>
>However, the names of an object are generally stored as an attribute
>of that object, which can be accessed using the attr or attributes
>functions. If you change your code to not use the names function and
>instead use attr or attributes to access the names then it should work
>for you.
>
>
>You may also want to consider changing your workflow to have your data
>objects read into a list rather than global variables, then process
>using lapply/sapply (this would require a change in how your data is
>saved from your example, but if you can change that then everything
>after can be cleaner/simpler/easier/more fool proof/etc.)
>
>
>On Mon, Aug 15, 2016 at 2:49 AM, <G.Maubach at weinwolf.de> wrote:
>> Hi All,
>>
>> I would like to access an object using a sting.
>>
>> # Create example dataset
>> var1 <- c(1, 2, 3)
>> var2 <- c(4, 5, 6)
>> data1 <- data.frame(var1, var2)
>>
>> var3 <- c(7, 8, 9)
>> var4 <- c(10, 11, 12)
>> data2 <- data.frame(var3, var4)
>>
>> save(file = "c:/temp/test.RData", list = c("data1", "data2"))
>>
>> # Define function
>> t_load_dataset <- function(file_path,
>> file_name) {
>> file_location <- file.path(file_path, file_name)
>>
>> print(paste0('Loading ', file_location, " ..."))
>> cat("\n")
>>
>> object_list <- load(file = file_location,
>> envir = .GlobalEnv)
>>
>> print(paste(length(object_list), "dataset(s) loaded from",
>> file_location))
>> cat("\n")
>>
>> print("The following objects were loaded:")
>> print(object_list)
>> cat("\n")
>>
>> for (i in object_list) {
>> print(paste0("Object '", i, "' in '", file_name, "' contains:"))
>> str(i)
>> names(i) # does not work
>> }
>> }
>>
>> I have only the character vector object_list containing the names of
>the
>> objects as strings. I would like to access the objects in object_list
>to
>> be able to print the names of the variables within the object
>(usuallly
>a
>> data frame).
>>
>> Is it possible to do this? How is it done?
>>
>> Kind regards
>>
>> Georg
>>
>> ______________________________________________
>> R-help at 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.