On 14/04/2014, 10:23 AM, Marc Schwartz wrote:
Hi Martin,

Thanks for your confirmation on this.

I normally do not use R CMD Sweave, as I too run under ESS in normal day to day 
operations. This finding was a quirk of having a particular Rnw document that I 
occasionally run using R CMD Sweave and I had done so over the weekend, 
realizing this behavior.

This sounds like an argument for dropping R CMD Sweave, rather than fixing it. The bug was introduced in July, 2013, and nobody noticed it because so few people use that feature, and apparently nobody who does use it bothers to test pre-release versions.

Duncan Murdoch

Thanks again.

Regards,

Marc


On Apr 14, 2014, at 7:28 AM, Martin Maechler <maech...@stat.math.ethz.ch> wrote:

Marc Schwartz <marc_schwa...@me.com>
    on Sun, 13 Apr 2014 10:22:55 -0500 writes:

[on the R-SIG-Mac  mailing list] :      

Hi all,
With R version 3.1.0 on OSX, using either the Snow Leopard or the Mavericks 
binary installation on a Mac with fully updated Mavericks, there has been a 
change in behavior since 3.0.3.

I've just written to R-core about this:

    R CMD Sweave

has *serious* problems also in the very simple case when it
should produce figures: They are not available after the
completion of R CMD Sweave,
confirming your  'deletes non tex files created upon batch mode exit'

So this is not related to OSX only, but also a big problem
at least on other *nix descendent platforms, such as Linux.

In short, failure (no graphic produce in the example below) by

   R CMD Sweave foo.Rnw

but all is fine with using Sweave(), as you Marc, noted, and hence with

   Rscript -e 'Sweave("foo.Rnw")'

... and to answer your question:
No this was not intended and is probably one of the bigger /
most embarrassing bugs in a newly released version of R
in my view:

Basically  'R CMD Sweave' is partly broken in R 3.1.0.
Yes, this should never have happened.

I had to partially revert the R 3.1.0 installation here (our
statistics dept), by making R 3.0.3 the default 'R'
for now, as we are relying on 'R CMD Sweave ..' in many places.

Personally I've never noticed the problem, as I seem to always
Sweave from ESS (Emacs speaks statistics) which calls  Sweave()
in R, and that works fine, also in  R 3.1.0, as you've already
noted

Martin Maechler, ETH Zurich

%------------------------------------------------------------
\documentclass[12pt]{article}
\usepackage{Sweave}
\begin{document}  Just a simple graphic

<<qqnorm, fig=TRUE>>=
qqnorm(rnorm(20))
@

and that's all, folks!
\end{document}
%------------------------------------------------------------

I have a master .Rnw file which runs a series of outputs from multiple R code 
files, each called in BATCH mode using system() from within the master .Rnw 
file. The output of the R code files go to separate text files in order to 
catch some of the function call output that would not otherwise be included in 
the resultant .tex file due to output redirection.

Those text files are then included in the resultant .tex file using, for 
example:

\lstinputlisting[caption={}]{test.out}

directives which are included in the .Rnw source file.

A simple example to replicate the observed behaviors.

The test.Rnw file content:

%% R CMD Sweave test.Rnw
<<results=tex,echo=false>>=
system("R CMD BATCH test.R test.out")
@


The test.R file content:

options(echo = FALSE)
options(useFancyQuotes = FALSE)
installed.packages()


On version 3.0.3, the file test.out is created, along with test.tex. test.out 
contains the output of installed.packages(). I did not include the 
aforementioned listing directive in test.Rnw here for simplicity.

On version 3.1.0, the file test.out is created, but when the R CMD Sweave 
command exits and returns to the CLI in the console, test.out is deleted, 
presumably as part of a post R batch session clean up process. The file 
test.tex is retained.

I uninstalled 3.1.0 and reinstalled 3.0.3 and observed the prior behavior. I 
then tried clean installs of both the Snow Leopard and Mavericks 3.1.0 
binaries, with the new behavior observed in both cases.

In reading the NEWS file for 3.1.0, there are multiple references to Sweave, 
but there is nothing explicit about this new behavior.

I should note that when the .Rnw file is run from within an R 3.1.0 interactive 
session using:

Sweave("test.Rnw")

the test.out file is created and not deleted upon the function exit, or when 
exiting the R session back to the console.

Thus, this new behavior seems to be limited to running Sweave from the CLI 
using R CMD. It is not clear to me if this new behavior is by design or perhaps 
an unintended consequence of changes elsewhere in Sweave processing or in the 
handling of R in BATCH mode.

When watching the folder where the file output activity takes place, I note 
that a file .build.timestamp is created and then deleted, which leads me to 
believe that the new functions fileSnapshot() and changedFiles() are being used 
in the course of processing R in BATCH mode. If that is correct and there is a 
clean up step that is occurring upon BATCH mode exit, which deletes all files 
and folders other than .tex files, is it possible that this process is being 
overly aggressive? Or if not, is there a way to not have these files deleted or 
have a protected folder where these files can be retained?

Thanks for any insights.

Regards,

Marc Schwartz

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to