/ .prx文件中的Sexpr {}引用R对象

时间:2014-04-09 22:40:37

标签: r latex knitr rstudio

我正在使用RStudio 0.98.501和MacTex 2013来运行分析并编写手稿。在我的设置中,我使用了一个定义LaTeX模板的master.rnw文件。此文件输入协作者贡献的一些手稿.tex文件(实际上是work in Word and I convert to .tex,但这并不重要)。

为了在master.rnw中保持清洁,我在child .rnw file中对分析进行编码,并在同一子文件中编写我的分析原稿文本。在此子.rnw文件中的R代码块中定义对象很容易,例如result <- 1+2,并在子.rnw文本中引用此对象,例如{{ 1}}。

我遇到了一种情况,我希望在运行分析子\Sexpr{result}文件之前引用分析对象 - 在单独的方法部分.rnw中报告基本N = 100 - 所以我尝试了两种方法在输入引用对象的.tex文件之前,从master.rnw文件运行我的基本分析:(a)运行提供methods.tex文件的子文件,以及(b)获取{{} { 1}}来自.R文件中的代码块的文件。我认为结果应该存在差异。在我的情况下,没有:他们都失败了。

在我包含的.R文件中引用时,LaTeX无法识别R对象。当然,当我从master.rnw文件中引用R对象时它会很好。有没有办法在.tex文件中使用master.rnw并让LaTeX获取R对象?

我创建了一个最小的示例,并将文件上传到GitHub,如果有人想破解它的话。

\Sexpr

1 个答案:

答案 0 :(得分:2)

knit不会解析tex命令,因此methods.tex不会在knit时读出{。}}。

要解决此问题,请尝试以下方法:

<<knitr, include=FALSE>>=
  library(knitr)
  opts_knit$set(self.contained=FALSE)
  file.copy("methods.tex", "methods.rnw")
@

\documentclass{article}
\begin{document}

<<pre-results1, child='child.rnw', include=FALSE>>=
@
<<pre-results2>>=
  source("codeB.R")
@

% Methods section from rnw file
<<child="methods.rnw">>=
@ 

\end{document}