[R] Input encoding problem when using sweave with xetex

Erich Studerus erich.studerus at bli.uzh.ch
Thu May 13 01:07:46 CEST 2010


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?

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



More information about the R-help mailing list