Antwort: Re: Accessing an object using a string
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.
Gregory (Greg) L. Snow Ph.D. 538280 at gmail.com