我试图通过Sweave将R中的一些情节合并到我的LaTeX文档中。
\SweaveOpts{eps = FALSE, pdf = TRUE, echo = FALSE, prefix = TRUE, prefix.string = data}
<<label = abundanca:barplot, fig = TRUE, include = FALSE, results = hide>>=
barplot(abund, xlab="Vzorčne postaje", ylab="Abundanca", main="", col="slategrey", names.arg=c("HM1", "HM2", "HM3", "HM4", "HM5", "HM6", "HM7", "HM8", "HM9", "HM10"))
@Sweave中的pdf设备使用本机编码(在options("encoding")中设置),它不识别xlab中的本地字符(ščćž) (用两个点替换它们)。
我尝试将选项设置为在R中起作用的东西:
options("encoding" = "CP1250.enc")但我发现了一个错误:
Error in file() : unsupported conversion from 'CP1250.enc' to ''有什么解决办法吗?
编辑
运行aL3xa的Rnw
R CMD Sweave report.Rnw不起作用。
通过Eclipse+StatET运行相同的文件
Sweave("report.Rnw")然而,确实如此。
我的.Rnw文件和一个.pdf。
发布于 2010-08-08 15:36:16
这件事并不像看上去那么简单。从技术上讲,这个问题是OS/locale/pdf编写器/Sweave依赖的(参见"R安装和管理“,第7章)。由于我运行的是GNU/Linux,这个“解决方案”不是针对Mac和Windows用户的。为了让事情变得更复杂,GNU/Linux发行版有所不同,所以如果某些东西在Arch Linux上不起作用,比如Ubuntu,就有很大的可能。
我将使用mtcars数据集。让我们创建一些具有本地化字符的基本图:
pdf("foo.pdf")
boxplot(mpg ~ cyl, data = mtcars, ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja")
dev.off()(塞尔维亚语速成课程:"Potrošnja goriva“代表燃料消耗,"Broj cilindara”代表汽缸#,"Dijagram raspršenja“相当于散点图)
现在,我收到了一大堆警告:
Warning messages:
1: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Dijagram raspršenja' in 'mbcsToSbcs': dot substituted for <c5>
2: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Dijagram raspršenja' in 'mbcsToSbcs': dot substituted for <a1>
3: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Dijagram raspršenja' in 'mbcsToSbcs': dot substituted for <c5>
4: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Dijagram raspršenja' in 'mbcsToSbcs': dot substituted for <a1>
5: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Potrošnja goriva' in 'mbcsToSbcs': dot substituted for <c5>
6: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Potrošnja goriva' in 'mbcsToSbcs': dot substituted for <a1>
7: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Potrošnja goriva' in 'mbcsToSbcs': dot substituted for <c5>
8: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Potrošnja goriva' in 'mbcsToSbcs': dot substituted for <a1>虽然options(encoding = "CP1250")没有做到这一点--我得到了相同的警告,pdf.options(encoding = "CP1250")对它进行了修正,而pdf(file = "foo.pdf", encoding = "CP1250")也是相同的代表。因此,我将用options(encoding = "native.enc")返回我以前的编码,按照前面所说的设置pdf.options,并把事情做好。
有些用户只需设置pdf.options就可以脱身,而且使用Sweave也没有问题。因此,在开始绘图之前,您应该在.Rnw文件中的某个位置插入这部分代码:
<<setOptions, echo = FALSE, results = hide>>==
pdf.options(encoding = "CP1250")
@稍后,就这样做:
<<plotTheFigure, echo = TRUE, fig = TRUE>>==
# I've set echo to TRUE intentionally, to prove my point here
boxplot(mpg ~ cyl, data = mtcars, ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja")
@同样的场景表示ggplot2图。
你们中的一些人会得到正确的输出,但我没有!就像我之前说过的,如果你在运行Ubuntu,这是一个很大的机会,但就目前而言,我似乎无法让它活跃起来。
为了保存击键,您可以下载浪文件和/或PDF文件 (在Arch机器上执行)。如您所见,本地化字符在绘图函数中正确显示,但在Sweave中被混淆。现在,如果我试图将图形保存到PDF文件(没有甜味),我就会得到正确输出。
所以,我已经解决了一些问题,但还有很多试验和错误的工作要做。
请在您的机器上运行.Rnw文件,并给我一些反馈。为了方便起见,我创建了一个Rscript来收集您的系统信息(而不是个人信息),我在本例中找到了这些信息:这里是来源,这是我的输出。
https://stackoverflow.com/questions/3434349
复制相似问题