commandArgs(),是R自带的参数传递函数
可以创造一个交互接口,在LInux等外部系统可以用命令行参数运行R程序
在写R文件时,加入argv<-commandArgs()
,然后把要从文件里要调用的变量对应地改成argv[n]就可以了(n为数字)
在命令行调用时的命令为:Rsciprt 你要调用的R文件.R 参数1 参数2
实现效果:
test.txt里面是一些三个点的坐标
test.txt
1 2
4 1
2 3
我要在命令行指定画test.txt的散点图,输出一个out.png图片
命令行里输入:
Rscript plot.R test.txt out.png
输出:
plot.R是这样的:
argv<-commandArgs()
test<-read.table(argv[6])#读入argv[6],也就是我要的test.txt
png(file=argv[7])
plot<-plot(test)
dev.off()
我之前的问题在于,这个argv[n]里面的数字是怎么得来的
在R环境下输入
argv<-commandArgs()
head(argv[1:10])
可以查看前10个位置里面当前已经使用到第几个位置
比如
> argv<-commandArgs()
> print(argv[1:10])
[1] "RStudio" "--interactive" NA
[4] NA NA NA
[7] NA NA NA
[10] NA
也就是1和2都被占用了,我们从3开始可以指定自己的参数
另外需要注意的是本地R环境和服务器上面占用的位置数量可能不一样
比如本地:
这里从第3个,也就是NA值开始是可以自定义的
这是刚才示例里的,可以看到从第6和第7是我们设定的参数
如果要将自己输入的参数指定为程序的第一个参数,只需要加上trailingOnly=T
这个flag