[R] load ing and saving R objects
Prof Brian Ripley
ripley at stats.ox.ac.uk
Tue Jun 14 16:41:10 CEST 2005
On Tue, 14 Jun 2005, Barry Rowlingson wrote:
> Richard Mott wrote:
>> Does anyone know a way to do the following:
>>
>> Save a large number of R objects to a file (like load() does) but then
>> read back only a small named subset of them . As far as I can see,
>> load() reads back everything.
>
> Save them to individual files when you generate them?
>
> for(i in 1:15000){
>
> m=generateBigMatrix(i)
>
> filename=paste("BigMatrix-",i,".Rdata",sep='')
> save(m,file=filename)
> }
>
> Note that load will always overwrite 'm', so to load a sample of them in
> you'll need to do something like this:
>
> bigSamples=list()
>
> for(i in sample(15000,N)){
> filename=paste("BigMatrix-",i,".Rdata",sep='')
> load(filename)
> bigSamples[[i]]=m
> }
>
> But there may be a more efficient way to string up a big list like
> that, I can never remember - get it working, then worry about optimisation.
(Yes, use bigSamples <- vector("list", 15000) first.)
> I hope your filesystem is happy with 15000 objects in it. I would
> dedicate a folder or directory for just these objects' files, since it
> then becomes near impossible to see anything other than the big matrix
> files...
.readRDS/.saveRDS might be a better way to do this, and avoids always
restoring to "m".
If your file system does not like 15000 files you can always save in a
DBMS.
I did once look into restoring just some of the objects in a save()ed
file, but it is not really possible to do so efficiently due to sharing
between objects.
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-help
mailing list