[R] Input encoding problem when using sweave with xetex

Duncan Murdoch murdoch.duncan at gmail.com
Thu May 13 03:23:07 CEST 2010


On 12/05/2010 7:07 PM, Erich Studerus wrote:
> Thanks again. It finally worked after copying the Sweave.sh file to a path 
> that contains no spaces. Is there a special command for windows specific 
> path names with spaces?
>   

Putting the path in double quotes might work, but I've no idea how to 
tell lyx to do that.

Duncan Murdoch
> Erich
>
>
> On Wed, 12 May 2010 18:04:44 -0400
>   Duncan Murdoch <murdoch.duncan at gmail.com> wrote:
>   
>> 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.
>>>   
>>>       
>
> ______________________________________________
> 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