[R] Input encoding problem when using sweave with xetex

Duncan Murdoch murdoch.duncan at gmail.com
Thu May 13 00:04:44 CEST 2010


On 12/05/2010 5:12 PM, Erich Studerus wrote:
> 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?
>   

Sorry, I forgot that if you make up your own command to be run by R CMD 
then you need to give the full path to it, and you can't suppress the 
.sh suffix.  So your command should be

R CMD /path/to/UTF8Sweave.sh $$i


(where /path/to/ is the actual path to where you decide to keep this 
file, which needn't be in rhome/bin).

Duncan Murdoch


> 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.
>>>   
>>>       
>
> ______________________________________________
> 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