在bash脚本中运行R批处理脚本

时间:2012-03-07 07:48:52

标签: bash r

我正在尝试从bash脚本运行批处理脚本(保存在文件中的R命令集)。出于某种原因,当我在命令行上手动键入时,运行R脚本的bash脚本中的语句会起作用,但是当在批处理脚本中执行该语句时,它将失败并显示错误:

munge_data.sh:第17行: - file = stats.R:找不到命令

以下是bash脚本的片段:

#!/bin/bash
SCRIPTDIR=/path/to/some/directory
RBIN=`which R`

cd $SCRIPTDIR

$RBIN --file=stats.R > my.stats.output.txt # <- this is line 17 in my script

有人能发现造成这个问题的原因吗?

3 个答案:

答案 0 :(得分:4)

显然,which R没有返回任何内容,可能是因为R不在您的PATH中,因此$RBIN为空,并且shell尝试运行不存在的命令--file=stats.R

(如果R应该在PATH中,你可以在不使用变量的情况下调用它R。)

答案 1 :(得分:1)

你没有在Bash中使用正确的R调用函数。

在命令行中按照以下命令格式运行R(R CMD BATCH文件output.file)

#!/bin/bash

R CMD BATCH your_file.R my.stats.output.txt

将获得您想要的99%(确保您拥有此bash文件的执行权限)

你没有把它弄好的原因是因为当执行which R时,控件从bash文件传输到R程序,然后bash脚本暂停执行。

答案 2 :(得分:1)

没人提到Rscript(附R)或littler早于它:

#!/usr/bin/Rscript

z <- rnorm(5)
# ... other R commands ...

#!/usr/bin/r  

z <- rnorm(5)
# ... other R commands ...

您可以在执行常规chmod 755 filename后直接运行这两项内容。