On 20/08/2014, 8:58 AM, Barry Rowlingson wrote: > On Tue, Aug 19, 2014 at 1:30 AM, Jinsong Zhao <jsz...@yeah.net> wrote: >> Hi there, >> >> I have several saved data files (e.g., A.RData, B.RData and C.RData). In >> each file, there are some objects with same names but different >> contents. Now, I need to compare those objects through plotting. >> However, I can't find a way to load them into a workspace. The only >> thing I can do is to rename them and then save and load again. >> >> Is there a convenient to load those objects? >> >> Thanks a lot in advance. > > The technique of loading into an environment already mentioned can be > cleaned up and put into a function. > > First lets save a thing called "x" into two files with different values: > > > x="first" > > save(x,file="f.RData")) > > x="second" > > save(x,file="s.RData") > > This little function wraps the loading: > > > getFrom=function(file, name){e=new.env();load(file,env=e);e[[name]]} > > So now I can get 'x' from the first file - the value is returned from > `getFrom` so I can assign it to anything: > > > x1 = getFrom("f.RData","x") > > x1 > [1] "first" > > x2 = getFrom("s.RData","x") > > x2 > [1] "second" > > And I can even loop over RData files and read in all the `x`s into a vector: > > > sapply(c("f.RData","s.RData"),function(f){getFrom(f,"x")}) > f.RData s.RData > "first" "second" > > (on second thoughts, possibly 'loadFrom' is a better name)
That's a nice little function. You could also have lsFrom, that lists the objects stored in the file, along the same lines: lsFrom <- function(file, all.names = FALSE, pattern) { e <- new.env() load(file, envir = e) ls(e, all.names = all.names, pattern = pattern) } Duncan Murdoch ______________________________________________ R-help@r-project.org mailing list 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.