在很多情况下,我们需要在外部环境中直接调用软件来执行某个脚本,而不需要进入软件的交互界面,这样被称为非交互方式,通过这种方式可以方便快捷地执行脚本语句达到输出结果的目的。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日志报告文件来使用。