| ## From: Winston Chang |
| ## To: R Devel List ...@r-project.org |
| ## Subject: [Rd] recordPlot/replayPlot not working with saveRDS/readRDS |
| ## Date: Mon, 2 Apr 2018 12:23:06 -0500 |
| |
| # Save displaylist for a simple plot |
| png('test.png') |
| dev.control(displaylist ="enable") |
| plot(1:5, 1:5) |
| r <- recordPlot() |
| dev.off() |
| |
| # Replay plot. This works. |
| png('test1.png') |
| replayPlot(r) |
| dev.off() |
| |
| ## Save the plot and load it, then replay it (in *same* R session): |
| ## Now works, too |
| saveRDS(r, 'recordedplot.rds') |
| r2 <- readRDS('recordedplot.rds') |
| png('test2.png') |
| replayPlot(r2) |
| ## Gave Error: NULL value passed as symbol address |
| dev.off() |
| |
| ## Now check the three PNG graphics files do not differ: |
| (files <- dir(pattern = "test.*[.]png")) |
| tt <- lapply(files, readBin, what = "raw", n = 2^12) |
| lengths(tt) |
| sapply(tt, head) |
| stopifnot( |
| identical(tt[[1]], tt[[2]]), |
| identical(tt[[3]], tt[[2]])) |