我的问题可能不如标题所暗示的那么普遍.我在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的任何建议,提示,链接和回到根源的呼声......
你问过几个问题,所以这里有几个答案;
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)
您可能希望查看这些 相关的 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文件中唯一需要做的工作是打印表,制作图表并提取一些数字.
像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.
归档时间: |
|
查看次数: |
2166 次 |
最近记录: |