• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

R语言中使用Rscript命令代替RCMDBATCH执行命令行指令【转】

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

转载:http://www.360doc.com/content/11/1201/22/5013584_169013651.shtml

在windows下通过命令行来调用R脚本,可以使用R CMD BATCH file 命令。这样可在别的语言中(java,perl,php)执行此条命令,从而调用R脚本。

但是当在linux下,因为BATCH指令的权限问题,将会导致非root权限无法调用此条指令。这时使用Rscript file代替即可。(貌似Rscript在windows下无法使用,因为MS的CMD不支持)。

 

==============================================================================================

昨天又重新查看文档,并做了尝试,发现命令行指令可以用以下两种形式:

1.R [--option] [-e expr] <infile >outfile [args]

2.Rscript [--options] [-e expr] file [args]

首先看1.

a. [--option] 代表R指令的选项,具体的选项有很多,可以参考相关文档,其中'--save', '--no-save' or '--vanilla'这三者必须填一个。这就意味着[--option]不能为空。同时推荐使用--slave 选项,这个选项让R命令工作在安静模式,否则,R脚本中的所有内容都会打印在命令行内。

b. [-e expr] 这个没弄明白,我没有用到这个部分。

c. <infile 输入的文件。<不可省略。

d. >outfile 输出的文件,同上。

e. args 希望向R脚本传递的参数,在脚本内可以用commandArgs()函数读取这些参数。

f. 除了args,好像前面几个部分是可以颠倒位置的。但是args参数必须放在最后,否则报错

g. [args]可以直接用想要传递的参数代替,也可以先用--args 指明,比如--args XXX, 这两种方法都可以成功的向脚本传递参数,其参数都可以被commandArgs()函数获得。但是不同在于,如果想使用commandArgs(TRUE)来筛选出合适的参数的时候,必须用 --args XXX

 

接着看2.

Rscript实际上是R脚本在命令行应用的一个前端

在Rscript [--options] [-e expr] file [args]中:

a. [--options] [-e expr]并非必须的。

b. file前面不用加"<" ,这点和R指令不同,Rscript会自动将第一个单独的字符串(前面没有加-- < > 等字符)作为输入的脚本文件名。

c. 如果想指定输出,可以使用>outfile 这点和R指令相同。

d. 同样[args]必须在最后。但是commandArgs(TRUE)是无法从中筛选出合适的参数的。即是说,如果想使用commandArgs(TRUE),那么只有使用R指令。

 

PS: commandArgs(TRUE)和commandArgs()区别在于:

对于命令R --vanilla --slave <test.r --args ss

前者得到的参数为 "ss" 后者得到的参数为 "/path/to/R"       "--vanilla"             "--slave"            "--args"                "ss" 

 

R CMD BATCH file 的格式是R CMD command file,这里的command是别的工具,比如BATCH(批处理工具),R借助这种指令来使用别的工具处理R脚本。所以在linux下这种方式可能会牵涉到别的工具的权限的问题。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
R语言-attach、detach、with发布时间:2022-07-18
下一篇:
R语言学习笔记(六):列表及数据框的访问发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap