I found as Duncan, but then I saw 
https://stackoverflow.com/questions/54144239/how-to-use-saverds-refhook-parameter
 and found more info as follows.  (It will take me a while to go through the 
output, but basically I am seeing code from the "oce" package, which makes me 
think I ought to get rid of the "Imports:" listing in my DESCRIPTION and 
instead use "Suggests:" and then grab things at runtime, as needed.  Maybe that 
will trim down the rds file, e.g. I see in the output from below about 1000 
lines that correspond to a particular oce function (or set of specialized 
versions of a generic, actually), which yields size 38649 in a references$`env` 
entry.

unser <- function(s){
  i <- as.numeric(s)
  return(rdx$variables[[i]])
}

readRDB <- function(filename, offset, size, type = 'gzip') {
       f <- file(filename, 'rb')
       on.exit(close(f))
       seek(f, offset + 4)
       unserialize(memDecompress(readBin(f, 'raw', size - 4), type), 
refhook=unser)
}



Dan E. Kelley [he/him/his 314ppm]
Professor and Senator
Department of Oceanography
Dalhousie University
PO BOX 15000
Halifax, NS, Canada B3H 4R2
(902)494-1694  dan.kel...@dal.ca<mailto:dan.kel...@dal.ca>









On Jun 15, 2020, at 4:12 PM, Duncan Murdoch 
<murdoch.dun...@gmail.com<mailto:murdoch.dun...@gmail.com>> wrote:

CAUTION: The Sender of this email is not from within Dalhousie.

On 15/06/2020 1:24 p.m., Ivan Krylov wrote:
On Mon, 15 Jun 2020 12:52:20 -0400
Duncan Murdoch <murdoch.dun...@gmail.com<mailto:murdoch.dun...@gmail.com>> 
wrote:

maybe someone else can suggest how to read an object from
the .rdb file using R code.  Internally R uses C code for this.

This function seems to work for me:

# filename: the .rdb file
# offset, size: the pair of values from the .rdx
# type: 'gzip' if $compressed is TRUE, 'bzip2' for 2, 'xz' for 3
readRDB <- function(filename, offset, size, type = 'gzip') {
     f <- file(filename, 'rb')
     on.exit(close(f))
     seek(f, offset + 4)
     unserialize(memDecompress(readBin(f, 'raw', size - 4), type))
}


Thanks, though it didn't work for me.  I get

Error in unserialize(memDecompress(readBin(f, "raw", size - 4), type)) :
 no restore method available

on every object I tried.  However, maybe Dan will have better luck.

Duncan Murdoch


        [[alternative HTML version deleted]]

______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

Reply via email to