Sweave:将R的输出解释为LaTeX代码

8
我编写了一些自定义的R代码,包装了第三方二进制文件。该二进制文件的特性之一是生成一个包含图像和文本的LaTeX文档。我的代码之一的特性是解析该文档并返回图像的LaTeX代码。
目标是将我的R代码嵌入到Rnw文档中。当运行Sweave时,我希望我的代码使用第三方二进制文件生成文档,然后提取图像的LaTeX代码并将其放入Sweave的.tex输出中。然后,当我对该输出运行latex时,由第三方二进制文件生成的图像应该自动地以漂亮的格式出现在我的报告中。
但实际上,LaTeX代码会像这样打印出来:
[1] " %\\begin{landscape}"
[1] " \\begin{center}"
[1] "\\psset{linecolor=black,tnsep=2pt,tnheight=0cm,treesep=.3cm,levelsep=40pt,radius[1] "% \\def\\psedge#1#2{\\ncangle{#2}{#1}}"
[1] "% \\pstree[treemode=R]"
[1] " \\pstree{\\Tcircle{ 1 }~[tnpos=l]{\\shortstack[r]{nwsprec\\\\$\\leq$ 1.93}}}{"

等等还有...

有没有办法让Sweave将R的输出视为LaTeX代码?

提前感谢。 -Wesley


brew 包提供了一种替代方案:您可以首先使用 ?brew() 处理代码,生成 Sweave 文件。 - baptiste
1
我不懂brew,但我成功编译了我的文档。 Sweave选项行应该像这样:<<echo=False, results=tex, include=True>>=(results=tex是关键部分) - Wesley
1
我还不得不从R中的print()命令切换到cat()命令,这消除了令人讨厌的格式错误。 - Wesley
7
很高兴你已经弄清楚了。鼓励你回答自己的问题,并接受答案,这样以后来到这个问题的人也会受益。 - Chase
1个回答

10

我找到答案了!Sweave代码应该像这样:

<<echo=False, results=tex, include=True>>=
...R code goes here...
@

在这里,选项results=tex是关键的变化,它告诉Sweave将来自R的输出解释为LaTeX代码。

为了去掉引号和行号,我需要使用R中的cat命令而不是print。具体地,我将print(line)更改为cat(paste(line, "\n", sep=''))


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接