我正在编写R包以支持可重复的研究。此时,工作流主要由bash脚本组合在一起,我可以通过发送像./runscript.sh
这样的单个命令来运行分析。我使用bash进行以下操作:
tar
,rsync
,'重命名'ssh
R --vanilla
运行R脚本,然后调用R函数sed
qsub
在我看来,从R函数或R脚本执行整个工作流程会更有效(更清晰,更简单)。我偏爱R,因为我对它更熟悉,并且主要在emacs ESS中工作。
是否值得使用system
和files
函数将所有这些bash用法封装在R中?
还有其他我尚未找到的R套餐会对此有帮助吗?
根据Al3xa的回答,我意识到重要的是要注意使用例如速度惩罚。 R vs bash版本的tar和gsub在1000-2000文件上可能会比工作流程中的当前速率限制步骤少:JAGS(~10-20min)和FORTRAN(> 4hrs)的计算
答案 0 :(得分:1)
嗯,有tar
,gsub
等函数。无论如何,我想你愿意创建一个跨平台解决方案。为了速度,您应该更喜欢使用bash,并且仅将R用于特定于R的函数。我发现在system
和/或file.*
中包装所有基于系统的命令并不有用...它会慢得多......如果你使用Linux,我建议{{ 1}}超过littler
界面。
答案 1 :(得分:1)
我非常喜欢将R用作“集成”环境与bash脚本。我正在将所有bash和ruby脚本移动到Rscript,因为我需要对它们进行更改。
只有几个原因不会让人想到将所有东西都转移到R中。我主要是指使用Rscript来完成这个
1)速度,从我的测试来看,在我遇到的任何情况下都会产生适度的影响,而且相对于你提到的时间而言,这将是微不足道的。
2)可移植性,因为Rscript的路径等可能因系统而异。我在OS X上写东西并将它们移到Linux服务器上没有问题,但在Windows上可能会中断。
我书中的优点是:
1)我写起来容易得多。我不必在条件语句和循环之类的细微特性之间来回切换。
2)更宽容。我无法描述我花了多少时间来尝试让bash脚本工作,因为我不小心有一个我不应该拥有的空间。 R在这方面要好得多(是的,当然,我们都应该完全遵循R中的惯例,但是如果我不这样做,我宁愿它不会让我停顿几个小时。)
3)我做得更好。对于tar
一个文件并不重要,但我发现我在R与awk/sed
中做了更好的文本操作。
Re:有用的软件包 - 根据我的知识,这不存在,但是我喜欢基于R的make
版本.make的语法是那里最不灵活的语法之一(标签与空格?真的吗?) - 我很乐意写一个基于R的替代方案。有一天,我会...