Question

Y a-t-il moyen de faire en sorte qu'un périphérique R (le postscript serait formidable) écrit le résultat dans une variable au lieu d'un fichier?

Par exemple, je sais ceci:

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

Enverra le texte postscript à STDOUT . Comment puis-je obtenir ce texte dans une variable de R ?

Était-ce utile?

La solution

J'ai réussi à insérer le binaire d'un graphique dans une variable R sous forme de chaîne. Sa lecture / écriture des frais généraux. Dans l'extrait de code ci-dessous, R enregistre le tracé sous forme de fichier temporaire et le relit.

## 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="")

Peut-être que cela vous est utile.

Autres conseils

postscript prend un argument de commande, d’où postscript (file = """, command = "| cat")

Pourquoi voudriez-vous faire cela? R n’est pas un très bon système pour manipuler des fichiers PostScript. Sinon, vous pouvez utiliser tempfile () pour écrire l'image dans un fichier que vous pourrez ensuite lire à l'aide de fonctions de fichier standard. Si vous vouliez être chic, vous pourriez peut-être utiliser des pipes fifo (), mais je doute que ça ira beaucoup plus vite. Mais je suppose que vous seriez mieux avec une approche différente.

Vous devriez pouvoir utiliser un textConnection comme suit.

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

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

Mais la chaîne reste vide - peut-être un bug?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top