[Rd] Sweave and absolute escaped backslashed Windows paths in R 2.12.0

Duncan Murdoch murdoch.duncan at gmail.com
Tue Oct 26 00:24:01 CEST 2010


Brian Diggs wrote:
> I've noticed a change in behavior in R 2.12.0 from 2.11.1 regarding the 
> treatment of absolute paths in the file argument of Sweave in a Windows 
> environment.

Looks like a bug to me, probably related to the new error reporting.

Duncan Murdoch

> 
> Consider the minimal Rnw file, attached and reproduced below my 
> signature in case .Rnw files get stripped.  This file is stored on my 
> (Windows) computer in H:/My Documents.  Using an absolute path with the 
> standard window's escaped backslahes path gives an error:
> 
>  > Sweave("H:\\My Documents\\test.Rnw")
> Writing to file test.tex
> Processing code chunks ...
>   1 : echo term verbatim
> 
> Error:  chunk 1
> Error : '\M' is an unrecognized escape in character string starting "H:\M"
> 
> Nothing in the chuck explicitly references the path, but something 
> Sweave does triggers this.  This did not happen in 2.11.1.  Specifying 
> the path using slashes or as a relative path works.
> 
>  > Sweave("H:/My Documents/test.Rnw")
> Writing to file test.tex
> Processing code chunks ...
>   1 : echo term verbatim
> 
> You can now run LaTeX on 'test.tex'
>  > Sweave("test.Rnw")
> Writing to file test.tex
> Processing code chunks ...
>   1 : echo term verbatim
> 
> You can now run LaTeX on 'test.tex'
> 
> I discovered this problem from a feature ESS has which has a keybinding 
> that executes Sweave using the command:
> 
>  > local({..od <- getwd(); setwd("h:\\My Documents\\"); Sweave("h:\\My 
> Documents\\test.Rnw"); setwd(..od) })
> Writing to file test.tex
> Processing code chunks ...
>   1 : echo term verbatim
> 
> Error:  chunk 1
> Error : '\M' is an unrecognized escape in character string starting "h:\M"
> 
> I can certainly work around it by manually executing Sweave with slashed 
> or relative paths, but it is an inconvient change in behavior that I 
> don't recall seeing a reference to in NEWS.
> 
> I'm guessing something in Sweave is taking the string
> "H:\\My Documents\\test.Rnw"
> and turning it into
> "H:\My Documents\test.Rnw"
> which when treated as a string is not valid (as \M is not a valid 
> escape).  However, I don't know what is doing this.  Could it be related 
> to the ability to give context sensitive errors ("Parsing errors 
> detected during Sweave() processing will now be reported referencing 
> their original location in the source file.") which is new in 2.12.0?
> 
>  > sessionInfo()
> R version 2.12.0 (2010-10-15)
> Platform: i386-pc-mingw32/i386 (32-bit)
> 
> locale:
> [1] LC_COLLATE=English_United States.1252
> [2] LC_CTYPE=English_United States.1252
> [3] LC_MONETARY=English_United States.1252
> [4] LC_NUMERIC=C
> [5] LC_TIME=English_United States.1252
> 
> attached base packages:
> [1] stats     graphics  grDevices utils     datasets  methods   base
> 
> 
> 
> ------------------------------------------------------------------------
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



More information about the R-devel mailing list