On Wed, 22 Apr 2015, Rainer M Krug wrote:
Envoyé de mon iPhone
Le 23 avr. 2015 à 04:23, Charles C. Berry <ccbe...@ucsd.edu> a écrit :
On Wed, 22 Apr 2015, Thomas S. Dye wrote:
Aloha all,
Prior to eaa3a761dae, when working in a session, I was able to run this
R source code block without problems:
,-----------------------------------------
| #+header: :file r/adze_wt_log.pdf
| #+header: :results output graphics
| #+header: :width 4 :height 3
| #+begin_src R
| g <- ggplot(x, aes(x = weight))
| g + geom_histogram(aes(y=..density..))
## Try this:
print( g + geom_histogram(aes(y=..density..)) ) # before rm(g).
| rm(g)
| #+end_src
`-----------------------------------------
After eaa3a761dae, I get an error and an empty output file.
That commit introduced a tryCatch() wrapper for graphics results.
You probably know that ggplot (or ggplot2) relies on printing of objects to
produce graphics (see R-FAQ 7.22).
tryCatch(expr,...) evaluates expr and returns its value, which is `rm(g)' in
your case. But `rm(g)' is not autoprinted, and you get an empty file.
I am not in front of my computer but there must be more, as even before
the commit there should have been empty file for exactly the same
reason.
`:results output' will return the autoprinted values. Without tryCatch it
works.
Also, the error is strange. Could you send a small reproducable example,
so that we can see which error you get? Because if you get an error and
an empty file, an error must be in the tryCatcb block.
Here are two blocks that differ in using tryCatch. The first produces an
empty, malformed pdf. The second produces a valid pdf. If you comment out
the `invisible()' line in the first, then both will produce similar valid
pdf's.
#+header: :file nada.pdf
#+header: :results output graphics
#+header: :width 4 :height 3
#+begin_src R
require(ggplot2)
df <-
data.frame(gp = factor(rep(letters[1:3], each = 10)),
y = rnorm(30))
ggplot(df, aes(x = gp, y = y)) + geom_point()
invisible()
#+end_src
#+BEGIN_SRC R :results output
require(ggplot2)
pdf(file="aok.pdf",width=4,height=3)
df <-
data.frame(gp = factor(rep(letters[1:3], each = 10)),
y = rnorm(30))
ggplot(df, aes(x = gp, y = y)) + geom_point()
invisible()
dev.off()
#+END_SRC
HTH,
Chuck