I wanted to compress a raw vector into another raw vector. This problem is solved using memCompress. However before discovering this function, I first tried to get this working using gzcon. From the documentation it seems that this should be possible:

>     Compressed output will contain embedded NUL bytes, and so ‘con’ is
>     not permitted to be a ‘textConnection’ opened with ‘open = "w"’.
>     Use a writable ‘rawConnection’ to compress data into a variable.

But I can't seem to get this to work:

> data <- as.raw(sample(0:255, 100))
> con <- rawConnection(raw(0), "wb")
> zz  <- gzcon(con)
> writeBin(data, zz)
> val <- rawConnectionValue(con)
Error in rawConnectionValue(con) :
  internal connection is not a rawConnection

The documentation of gzcon does mention that the original connection becomes unusable. Ok, so this error is to be expected. But how do I get to the compressed data?

As I mentioned memCompress(data) does what I want, so the the problem of compressing the data itself is solved, but I would like to understand how to use gzcon.

Thanks.

Jan

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide https://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to