Question

Is there a way to have an R Device (postscript would be great) write the output into a variable instead of a file?

For example I know this:

postscript(file="|cat")
plot(1:10)
dev.off()

Will send the postscript text to STDOUT. How can I get that text into a variable within R?

Was it helpful?

Solution

I've had success in getting the Binary of a plot into an R variable as a string. Its got some read/write overhead. In the snippet below, R saves the plot as a temp file and reads it back in.

## create a plot
x <- rnorm(100,0,1)
hist(x, col="light blue")

## save plot as temp file
png(filename="temp.png", width=500, height=500)
print(p)
dev.off()

## read temp file as a binary string
plot_binary <- paste(readBin("temp.png", what="raw", n=1e6), collapse="")

Maybe this is helpful to you.

OTHER TIPS

postscript takes a command argument, hence postscript(file="",command="|cat")

Why on earth would you want to do that? R is not a very good system for manipulating Postscript files. If nothing else, you can use tempfile() to write the image to a file, which you can then read in using standard file functions. If you wanted to be fancy, you could perhaps use fifo() pipes, but I doubt it'll be much faster. But I suspect you'd be better off with a different approach.

You should be able to use a textConnection as follows.

tc <- textConnection("string", "w")

postscript(tc)
plot(1:10)
dev.off()

But string remains blank - maybe a bug?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top