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

Reply via email to