[R] Input encoding problem when using sweave with xetex

Erich Studerus erich.studerus at bli.uzh.ch
Wed May 12 23:12:12 CEST 2010


You were right, that I would run into trouble with all these "". However, 
the second method doesn't work either. Somehow, the UTF8Sweave.sh file is 
not found during the compilation of my document. It says "can't open perl 
script .../bin/UTF8Sweave.sh: No such file or directory". I double checked 
that a file with this name is present in the same folder as the original 
Sweave.sh file and that the "Sweave" is changed to "UTF8Sweave" in the LyX 
preference file. Any idea, what could be wrong?

Erich


On Wed, 12 May 2010 16:20:03 -0400
  Duncan Murdoch <murdoch.duncan at gmail.com> wrote:
> On 12/05/2010 3:55 PM, Erich Studerus wrote:
>> Thanks again. Putting options(encoding="") into the R code chunk before 
>> calling the read.xls function indeed did the trick. Now, I have one last 
>> question: How can I edit the LyX preference file to call R with 
>> options(encoding='UTF-8'). I prefer to edit the LyX preference file rather 
>> than the Sweave.sh file, because I want to run R with UTF-8 only when I 
>>use 
>>  XeTeX. By editing the LyX preference file, I assume it would be possible 
>>to 
>> define different R encoding setups for different converters.
>>   
> 
> One way would be to change
> 
> R CMD Sweave $$i
> 
> in
> 
> \converter "literate" "latex"    "R CMD Sweave $$i"  ""
> 
> to
> 
> echo "library(\"utils\"); options(encoding=\"UTF-8\"); Sweave(\"$$i\")" | 
>R --no-restore --slave
> 
> but you may run into trouble because there's an extra set of "" to go 
>around there, and I don't know how Lyx handles escaping all those quotes. 
> So probably an easier way to go would be to take the Sweave.sh file
> that you've already edited, and copy it into UTF8Sweave.sh in the same 
>directory.  Then you can change the Lyx preference line to
> 
> \converter "literate" "latex"    "R CMD UTF8Sweave $$i"  ""
> 
> and things should work.  (Then you can restore the original Sweave.sh file 
>for cases where you don't
> want UTF-8.)
> 
> Duncan Murdoch
> 
>> Erich
>>
>>
>> On Wed, 12 May 2010 14:43:52 -0400
>>   Duncan Murdoch <murdoch.duncan at gmail.com> wrote:
>> > On 12/05/2010 2:29 PM, Erich Studerus wrote:
>> >> Thank you! I edited the Sweave.sh file and it works now for reading 
>>data 
>> >> stored as R data files, but the read.xls function from the 
>>gdata-package 
>> >> does no longer work.
>> >>
>> >> options('encoding'='UTF-8')
>> >> require(gdata)
>> >> read.xls("http://www.schwerhoerigkeit.pop.ch/hoergeraete_test.xls", 
>> >> stringsAsFactors = F)[2,2]
>> >>
>> >> This gives NA as output and a warning that there was an invalid entry 
>>for 
>> >> the connection. Is there a way to use read.xls with UTF-8 encoding?
>> >>   
>> > 
>> > I don't know, you'd have to ask its authors.  But you can probably set 
>> >options(encoding="") before calling it.  (I'm assuming the read.xls() is 
>>in 
>> >a code chunk in your Sweave file.  I would guess that you don't need to 
>>set 
>> >the encoding back to UTF-8 afterwards, but you might:  it all depends on 
>> >when Sweave() opens its
>> > output file.)
>> > 
>> > Duncan Murdoch
>> >>
>> >>
>> >>
>> >>
>> >> On Wed, 12 May 2010 12:45:51 -0400
>> >>   Duncan Murdoch <murdoch.duncan at gmail.com> wrote:
>> >> > On 12/05/2010 11:36 AM, Erich Studerus wrote:
>> >> >> Putting \usepackage[cp1252]{inputenc} into my preamble is not an 
>> >>option,
>> >> >> because XeTeX unlike LaTeX needs UTF-8 has input encoding. My goal 
>>is 
>> >>also
>> >> >> to have a LyX document that can be compiled both on Mac and Windows.
>> >> >>
>> >> >> I usually compile my Lyx-Sweave documents by one click of a button 
>>from
>> >> >> within Lyx. R code chunks are therefore executed by calling R from 
>>the
>> >> >> command line. If anybody knows how to run R with 
>> >>options(encoding="UTF-8")
>> >> >> from the command line under windows, that would be helpful.
>> >> >>
>> >> >> The command that calls R during compilation is contained in this 
>>file:
>> >> >> http://cran.r-project.org/contrib/extra/lyx/preferences
>> >> >>   
>> >> > 
>> >> > 
>> >> > You can do it with a little work.  If you look at the 
>> >>rhome/bin/Sweave.sh 
>> >> >file, you'll see that
>> >> > 
>> >> > R CMD Sweave file.Rnw
>> >> > 
>> >> > just executes something like
>> >> > 
>> >> > echo "library(\"utils\"); Sweave(\"file.Rnw\")" | R --no-restore 
>>--slave
>> >> > 
>> >> > What you want is to execute
>> >> > 
>> >> > echo "library(\"utils\"); options(encoding="UTF-8"); 
>> >>Sweave(\"file.Rnw\")" 
>> >> >| R --no-restore --slave
>> >> > 
>> >> > You could edit the rhome/bin/Sweave.sh file appropriately if you 
>>always 
>> >> >want Sweave to use UTF-8, or you could edit your Lyx preference file 
>>to 
>> >>put 
>> >> >in a line like this instead of what it had.
>> >> > 
>> >> > Duncan Murdoch
>> >>
>> >> ______________________________________________
>> >> R-help at r-project.org mailing list
>> >> https://stat.ethz.ch/mailman/listinfo/r-help
>> >> PLEASE do read the posting guide 
>> >>http://www.R-project.org/posting-guide.html
>> >> and provide commented, minimal, self-contained, reproducible code.
>> >>   
>> >
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide 
>>http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>   
>



More information about the R-help mailing list