简洁的想法

仁爱、喜乐、和平、忍耐、恩慈、良善、信实、温柔、节制

GNU R Shell Scripts

| Comments

为了能发挥bash的力量,R脚本最好能戴上参数,这样就能批处理很多数据了。
试验一:
=====
以下文件存为 test.r:

1
2
3
args = commandArgs()
print(args)
q()

运行:

1
R --slave --args test1 test2=no < test.r

输出:

1
2
3
4
5
[1] "/usr/lib64/R/bin/exec/R"
[2] "--slave"
[3] "--args"
[4] "test1"
[5] "test2=no"

如果把test.r脚本中的

1
args = commandArgs()

改为:
1
args = commandArgs(TRUE)

那就只会输出自定义的参数:

1
[1] "test1"  "test2=no"

这种代码威力还不够,

试验二:
=====
以下文件存为 testrun.r:

1
2
3
#!/usr/bin/env Rscript
args <- commandArgs(TRUE)
print(args)

然后chmod
chmod +x testrun.r

这样运行起来,参数的输入就漂亮多了:

1
testrun.r test1 test2=no

结果:
1
[1] "test1"  "test2=no"

试验三:
把以下文件存为: test.sh

1
2
3
4
5
6
#! /bin/bash
for csv in `ls *.csv`
do
testrun.r $csv
done
exit

运行
sh test.sh
这样就可以以csv文件名作参数,传递给testrun.r

Comments