The underlying problem turns out to be serialization of objects of class "NativeSymbolInfo". When these are serialized and unserialized, the memory address turns into a nullpointer, causing the fail. To fix it, one can simply create new nativeSymbolInfo objects. E.g:
# The old example: library(lattice); histogram(rnorm(100)); x <- recordPlot(); saveRDS(x, "myplot.rds"); y <- readRDS("myplot.rds"); # y contains nullpointers making it fail. print(y); # To fix: for(i in 1:length(y[[1]])) { if( "NativeSymbolInfo" %in% class(y[[1]][[i]][[2]][[1]]) ){ y[[1]][[i]][[2]][[1]] <- getNativeSymbolInfo(y[[1]][[i]][[2]][[1]]$name); } } print(y); Now this works, but it is a bit ugly. Is there a more general method of serializing objects in a way that native objects are restored where possible? On Mon, Jan 9, 2012 at 12:47 AM, Jeroen Ooms <jeroen.o...@stat.ucla.edu> wrote: > > I use recordPlot() to save plots to disk that I render later to a > variety of formats. This works fine for base R plots and ggplot2 > plots, and also used to work for lattice plots. However somewhere in > version 2.14 things stopped working for lattice plots. Here is an > example: > > library(lattice); > histogram(rnorm(100)); > x <- recordPlot(); > saveRDS(x, "myplot.rds"); > y <- readRDS("myplot.rds"); > print(y); > Error: NULL value passed as symbol address > > printing x works fine, but printing y either gives an error or prints > an empty page. The problem seems to be related to serializing the > recordedplot object, which contains a lot of memory pointers. Any tips > or workarounds? > > > sessionInfo() > R version 2.14.1 (2011-12-22) > Platform: i686-pc-linux-gnu (32-bit) > > locale: > [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C > [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 > [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 > [7] LC_PAPER=C LC_NAME=C > [9] LC_ADDRESS=C LC_TELEPHONE=C > [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C > > attached base packages: > [1] stats graphics grDevices utils datasets methods base > > other attached packages: > [1] lattice_0.20-0 > > loaded via a namespace (and not attached): > [1] grid_2.14.1 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel