Skip to content
Back to formatted view

Raw Message

Message-ID: <CANVKczMem0BchZ66zN8FeUtN7-e_qiKPX785QjH9jo6Y=nWtww@mail.gmail.com>
Date: 2014-08-20T12:58:04Z
From: Barry Rowlingson
Subject: loading saved files with objects in same names
In-Reply-To: <86077b1e665c4dc283a17c7e6098c766@EX-0-HT0.lancs.local>

On Tue, Aug 19, 2014 at 1:30 AM, Jinsong Zhao <jszhao at 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)

Barry