Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a way to read the contents of an .RDS file without loading it all into memory? [duplicate]

Tags:

r

I sometimes use print( load( "myDataFile.RData" ) ) to list the contents of a data file when I load it. Is there a way to list the contents without loading the objects contained in the data file?

like image 917
JD Long Avatar asked Nov 22 '22 01:11

JD Long


1 Answers

I do not think you could do that without loading the object.

A solution could be to save the R objects with a wrapper to save, which function would save the object AND the structure of the object to a special Rdata file. Later you could load the special binary file with a wrapper to load, where you could specify to only list the structure of the data.

I have done something like this in a very basic package, named saves, can be found on CRAN.


Update: I made up a very simple metadata solution

save.ls <- function(x, file) {
    save(list=x, file=file)
    l <- ls()
    save(l, file=paste(file, 'ls', sep=''))
}
load.ls <- function(file) {
    attach(paste(file, 'ls', sep=''));
    return(l)
    detach(pos=2)
}

Save with save.ls instead of save and load with load.ls to test. Meta information is saved in separate file (ending in "ls"), but the mechanism could be improved easily e.g. making a tar archive (like I do in the package linked above) of the Rdata object and the file containing the metadata.

like image 92
daroczig Avatar answered Nov 24 '22 14:11

daroczig