几乎开始使用Sweave

时间:2010-07-21 08:35:38

标签: r latex sweave

我的问题可能不如标题所示。我在Mac OS X上使用MySQL数据库运行R来存储数据。我已经和Komodo / Sciviews-R合作了一段时间。最近我需要自动生成报告并查看Sweave。我猜StatET / Eclipse似乎是Sweavers的“标准”解决方案。

1)从Komodo切换到StatET Eclipse是否合理?之前我尝试过StatET但是选择Komodo而不是StatET因为我喜欢calltip / autosuggest以及来自Komodo的更方便的配置。

2)生成Sweave文件的合理工作流程是什么?通常我先开发我的R代码,然后再关心报告。我今天刚刚了解到,Sweave中有一个文件同时包含R代码和Latex代码,并且从该文件中创建了.tex文档。虽然示例文件看起来很方便,但无法想象如何将我的250 + R代码行输入文件并将其与Latex混合。

是否可以只将qplot()和ggplot()语句输入到这样的文档中,并以某种方式获取数据库连接和中间结果等功能?

或者只是习惯于使用Latex和R代码?

对于任何建议,提示,链接和回到根源的呼声......

3 个答案:

答案 0 :(得分:8)

你问过几个问题,所以这里有几个答案;

StatEt / Eclipse是正确的Sweave方法吗?

不是必须的(注意:我是一个狂热的StatEt / Eclipse用户,并且将它用于纯R和Sweave / R并且喜欢它,我没有使用过Komodo / sciviews-R)。您应该能够从任何将生成.tex文件的R命令行运行sweave命令。然后,您可以将.tex文件从任何tex环境转换为可读的内容(如pdf)。

什么是好的Sweave工作流程?

当我想将一个r脚本变成一个sweave报告时,我通常从一个空的sweave模板开始,然后将我的整个R脚本复制/粘贴到标题后面的一个sweave R块中,即;

<<label=myEntireRScript, echo=false, include=false>> 
#Insert code here
myTable<-dataframe(...)
myPlot<-qplot(....)
@ 

然后我经历并找到我要报告的部分。例如,如果我想将一个表放入报表中,我将剪切R块并放入一个xtable块,对于变量和绘图也是如此。

<<label=myEntireRScript, echo=false, include=false>>=  
#Insert code here
@ 
Put any text I want before my table here, maybe with a \Sexpr{print(variable)} named variable

<<label=myTable, result=Tex>>= 
myTable<-dataframe(...)
print(xtable(mytable,...),...)
@ 
Any text I want before my figure
<label=myplot, result=figure>>= 
myPlot<-qplot(....)
print(qplot)
@ 

答案 1 :(得分:7)

您可能需要查看these related SO posts。我的帖子的其余部分与您的问题2有关。

使用Sweave创建报表时,我通常会将大部分R代码与报表文本分开。如果R代码运行得很快,那么我更喜欢在.Rnw文件的开头包含类似下面的内容:

<<>>
source('/path/to/script.r')
@

另一方面,如果R代码需要很长时间,我会在R脚本的末尾经常包含以下内容:

Sweave('/path/to/report.Rnw'); system('pdflatex report.tex')

这样,我可以快速重新生成报告,而无需再次运行所有R代码。然后,R在Sweave文件中唯一需要做的工作是打印表,制作图表并提取一些数字。

答案 2 :(得分:6)

与nullglob一样,我更喜欢将R和Sweave文件分开,但我更喜欢用save.image()而不是source()文件保存工作区。这避免了在每个.Rnw文件编译时运行R计算(我总是最终修补排版比我想要的更多)。

我的一般工作流程是用它自己的R文件在自己的文件夹中完成每个纸张/项目。当计算方“完成”时,我save.image()按原样存储所有工作区变量。

然后,在同一目录的.Rnw文件中,我使用setwd()设置工作目录,并使用load(".Rdata")加载所有变量。当然,您可以更改用于工作区的名称,但我为每个文件夹执行一个工作区并保留默认名称。哦,如果你修改R文件,请确保保存工作区图像并注意在工作区和.Rnw文件中留下的变量,但不再是R文件的一部分......这就是{{ 1}}方法会引起一些麻烦。

我在Mac上,如果你真的很讨厌,如果你有点怪异和emacs / ess,我建议使用TextMate。我使用vim和命令行R,但emacs / ess最适合大多数人。如果你长期参与其中,我怀疑你会后悔为R,Sweave和LaTeX学习emacs / ess。