几乎开始使用Sweave

Mat*_*ert 3 latex r 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代码的混合?

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

Pau*_*yuk 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(....)
@ 
Run Code Online (Sandbox Code Playgroud)

然后我经历并找到我要报告的部分.例如,如果我想将一个表放入报告中,我将切割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)
@ 
Run Code Online (Sandbox Code Playgroud)


nul*_*lob 7

您可能希望查看这些 相关的 SO 帖子.我的帖子的其余部分与您的问题2有关.

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

<<>>
source('/path/to/script.r')
@
Run Code Online (Sandbox Code Playgroud)

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

Sweave('/path/to/report.Rnw'); system('pdflatex report.tex')
Run Code Online (Sandbox Code Playgroud)

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


Ric*_*ron 6

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

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

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

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