Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将bash脚本合并到R包中? 背景_Bash_R_Workflow - Fatal编程技术网

将bash脚本合并到R包中? 背景

将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

我正在写一个R包来支持可复制的研究。此时,工作流主要由bash脚本连接在一起,我可以通过发送一个命令来运行分析,如
/runscript.sh
。我使用bash实现以下功能:

  • 文件操作
    tar
    rsync
    ,“重命名”
  • 本地运行bash文件并通过
    ssh
  • 使用调用R函数的
    R--
    运行R脚本
  • 使用
    sed查找并替换文件中的文本
  • 通过
    qsub提交作业
  • 在我看来,从R函数或R脚本执行整个工作流将更加高效(更干净、更容易)。我偏爱R,因为我更熟悉它,并且主要在emacs ESS中工作

    问题
  • 使用
    系统
    文件
    函数将bash的所有这些用法封装在R中是否值得

  • 还有其他我还没有发现的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)进行计算。