windows中用命令行执行R语言命令

由Kaizong Ye,Weilong Zhang 撰写

在很多情况下,我们需要在外部环境中直接调用软件来执行某个脚本,而不需要进入软件的交互界面,这样被称为非交互方式,通过这种方式可以方便快捷地执行脚本语句达到输出结果的目的。r软件也不例外,外部调用有很多方法,其中一种被称为 Batch Processing的方法,可以通过windows或者linux中的CMD运行脚本然后将结果传送输出到另一个out文件。下面举例说明。

首先到系统高级设置中配置r为环境变量

×

你平时都是怎么运行你的R脚本的呢?是打开R还是打开Rstudio再运行你的R脚本的呢?你不觉得这样很麻烦吗?今天就给你教一招,简单方便,也不用修改环境变量,让你的脚本像启动程序一样,点一下就自动执行了。

首先我们新建一个记事本,写入下面代码。写完之后保存,将记事本的后缀.txt改成.bat保存。

一. 使用R.exe程序运行你的脚本


(1)当脚本与bat文件不在同一个文件夹

"D:\Program Files\R\R-3.3.2\bin\R.exe" CMD BATCH "C:\Users\henry wang\Desktop\text.R" text.txtpause

如果bat文件是这样写的,那就要求我们的脚本程序必须和bat文件在同一个文件夹里面,否则就会报错。如果不在一个文件夹的话,那也没关系,咱们继续往下看。

(2)当脚本与bat文件在同一个文件夹

"D:\Program Files\R\R-3.3.2\bin\R.exe" CMD BATCH text.R text.txtpause

其中"D:\Program Files\R\R-3.3.2\bin\R.exe"R.exe的目录,后面再加上CMD BATCH,最后"C:\Users\henry wang\Desktop\text.R"为我们要执行的程序,我的脚本文件在桌面上放着。如果我们的.bat文件和脚本程序在一个文件夹时,这里可以直接写成text.R,不用写文件目录。

其实text.txt是可写可不写,如果不写的话,默认会生成一个 程序名.Rout 的文件,里面保存的是程序代码,不过最后会调用proc.time()函数。这种文件可以用谷歌浏览器,其他浏览器我没有试,具体就不知道了,notepad++也是可以打开的。当然你也可以像我一样设置生成text.txt。除此之外,它也会生成一个.Rdata文件,保存的是程序运行中变量的值,如果想要查看的话可以在Rstudio中使用load()函数载入查看。

bat文件的最后一行代码pause也是可写可不写的,如果写的话,运行完之后那个黑框框不会自动关闭,如果不写的话,运行完之后自动关闭。写上有什么好处,如果有错误的话就会显示,不写的话就算有错误,显示一下立马关了,啥也看不到,因此写上还是比较好的。


二. 使用Rscript程序运行你的脚本


(1)当脚本与bat文件不在同一个文件夹

"D:\Program Files\R\R-3.3.2\bin\x64\Rscript.exe" "C:\Users\henry wang\Desktop\text.R"pause

(2)当脚本与bat文件在同一个文件夹

"D:\Program Files\R\R-3.3.2\bin\x64\Rscript.exe" text.Rpause

使用Rscript.exe时,bat文件里面不用写CMD BATCH。

首先"D:\Program Files\R\R-3.3.2\bin\x64\Rscript.exe"指的就是Rscript.exe程序,然后"C:\Users\henry wang\Desktop\text.R"指的就是我们脚本text.R。如果我们的.bat文件和脚本程序在一个文件夹时,这里可以直接写成text.R,不用写文件目录。它俩中间有一个空格。


path=D:\R-3.3.0\bin;

在path中添加r.exe文件所在目录

然后通过cmd调用脚本语句,两个平台的格式分别为:

# Linux

RCMD BATCH [options] my_.R [outfile]

# Microsoft Windows (调整自己的 R.exe 软件目录)

"C:\Program Files\R\R-2.13.1\bin\R.exe" CMD BATCH

--vanilla --slave "c:\my projects\my_.R"

在windows中打开命令行界面

输入命令

"C:\Program Files\R\R-2.13.1\bin\R.exe" CMD BATCH

--vanilla --slave "c:\my projects\my_.R"

其中”C:\Program Files\R\R-2.13.1\bin\R.exe”为r的软件目录

“c:\my projects\my_.R”为执行文件的目录

运行后,cmd会将输出结果传输到文件目录的out文件中

值得注意的是,out文件中会记录下console中所有出现的输出数据

同时会记录下文件执行时间

对比rstudio界面中的输出语句

相对于r交互中的输出,值得注意的几点:

1.输出看起来就像R是交互式地运行的。

2.输出结果中的参数多了一些。

3.最后有一个运行总结,显示运行脚本花费的时间。

另外一方面,当脚本无法正常执行时,同样会输出out报告错误原因

因此对于网站的日常运营来说,用这种方式不仅方便快捷,并且可以记录下过程输出和运行总结,可以作为log日志报告文件来使用。


可下载资源

关于作者

Kaizong Ye拓端研究室(TRL)的研究员。

本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。

​非常感谢您阅读本文,如需帮助请联系我们!

 
QQ在线咨询
售前咨询热线
15121130882
售后咨询热线
0571-63341498