将bash脚本合并到R包中? 背景
我正在写一个R包来支持可复制的研究。此时,工作流主要由bash脚本连接在一起,我可以通过发送一个命令来运行分析,如将bash脚本合并到R包中? 背景,bash,r,workflow,Bash,R,Workflow,我正在写一个R包来支持可复制的研究。此时,工作流主要由bash脚本连接在一起,我可以通过发送一个命令来运行分析,如/runscript.sh。我使用bash实现以下功能: 文件操作tar,rsync,“重命名” 本地运行bash文件并通过ssh 使用调用R函数的R--运行R脚本 使用sed查找并替换文件中的文本 通过qsub提交作业 在我看来,从R函数或R脚本执行整个工作流将更加高效(更干净、更容易)。我偏爱R,因为我更熟悉它,并且主要在emacs ESS中工作 问题 使用系统和文件函数将bas
/runscript.sh
。我使用bash实现以下功能:
tar
,rsync
,“重命名”ssh
R--
运行R脚本sed查找并替换文件中的文本
qsub提交作业
系统
和文件
函数将bash的所有这些用法封装在R中是否值得
根据Al3xa的回答,我意识到需要注意的是,在1000-2000文件上使用tar和gsub的eg.R vs bash版本的速度损失可能小于工作流中当前的速率限制步骤:通过JAGS(~10-20min)和FORTRAN(>4hr)进行计算,
gsub
等等。无论如何,我想您愿意创建一个跨平台解决方案。为了提高速度,您应该更喜欢bash,并且只在特定于R的函数中使用R。我不认为将所有基于系统的命令包装在system
和/或文件中是有用的。*
。。。它会慢得多。。。如果您使用的是Linux,我建议您使用littler
而不是Rscript
接口。我非常喜欢使用R作为“集成”环境而不是bash脚本。我正在将所有bash和ruby脚本移动到Rscript,因为我需要对它们进行更改
只有几个理由不让我想到的一切都进入R。我主要指的是使用Rscript来实现这一点
1) 速度,从我的测试来看,在我遇到的任何情况下,速度都是一个中等的影响,相对于您提到的时间来说,速度是微不足道的
2) 可移植性,即Rscript等的路径在不同系统中可能不同。我在OSX上写东西并将它们移动到Linux服务器上没有问题,但在Windows上可能会崩溃
我书中的优点是:
1) 我写起来容易多了。我不必在条件语句和for循环之类的细微特性之间来回切换
2) 更加宽容。我无法描述我花了多少时间试图让bash脚本工作,因为我不小心有了一个我不应该有的空间。在这方面,R要好得多(是的,当然,我们都应该完美地遵循R中的惯例,但如果我不这么做,我宁愿它不会让我耽误几个小时)
3) 我的工作做得更好。对于tar
一个文件来说,这并不重要,但我发现我在R中比在awk/sed
中做得更好
Re:有用的软件包——据我所知,这是不存在的,但我喜欢基于R的
make
版本。make的语法是最不灵活的(制表符vs空格?真的吗?)——我喜欢编写基于R的替代方案。总有一天,我会……我不确定在1000-2000个文件上使用R vs bash版本的tar
和gsub
会对速度造成什么样的损失(尽管我可以测试这个),但目前工作流中的限速步骤是通过JAGS(~10-20min)和FORTRAN(>4hr)进行计算。