R之批处理
在linux下如何编写脚本调用R语言写的程序呢?
R语言进行批处理有2种方式:
- R CMD BATCH --options scriptfile outputfile
- Rscript --options scriptfile arg1 arg2 arg3 >outputfile
options的选项以及含义如下:
- --slave 类似于--quiet,它禁止回送输入的信息,使R软件输出的信息更为简洁。
- --no-restore 在R启动时不还原工作空间。对于希望以空白工作空间启动R的脚本而言,这个选项很有必要。
- --no-save 在退出R时,不保存工作空间;否则,R会保存当前工作空间并覆盖原有工作目录中的.RData文件。
- --no-init-file 不读取.Rprofile文件或者~/. Rprofile文件。
1. R CMD BATCH的用法
这种最基本的知识,不多说,直接上例子:
clotting <- data.frame(
u = c(5,10,15,20,30,40,60,80,100),
lot1 = c(118,58,42,35,27,25,21,19,18),
lot2 = c(69,35,26,21,18,16,13,12,12))
cat("Model data:\n")
print(clotting)
warning("Model starting")
obj <- glm(lot1 ~ log(u), data=clotting, family=Gamma)
cat("\nEstimated parameters:\n")
coef(summary(obj))
q(runLast=FALSE)
注:代码最后的是不让程序打印proc.time函数的输出结果。
上述的命令保存成test.R,在命令行中通过下面的命令进行调用:
> R CMD BATCH --slave test.R out
out文件中的输出结果为:
Model data:
u lot1 lot2
1 5 118 69
2 10 58 35
3 15 42 26
4 20 35 21
5 30 27 18
6 40 25 16
7 60 21 13
8 80 19 12
9 100 18 12
警告信息:
Model starting Estimated parameters:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.01655438 0.0009275466 -17.84749 4.279149e-07
log(u) 0.01534311 0.0004149596 36.97496 2.751191e-09
2. Rscript 用法
与上述方法不同的是,Rscript可以传入参数,其中options的选项取值是相同的。下面的例子是写在arith.R文件中,通过argv<-commandArgs(TRUE)来将传递的参数转化为字符串数组。
argv<-commandArgs(TRUE)
x<-as.numeric(argv[1])
y<-as.numeric(argv[2])
cat("x=",x,"\n")
cat("y=",y,"\n")
cat("x+y=",x+y,"\n")
cat("x^y",x^y,"\n")
调用的命令:
> Rscript arith.R 1 2 >output
输出结果:
x= 1
y= 2
x+y= 3
x^y 1
也可以将arith.R改成可执行文件在命令行中直接执行:
#! /usr/bin/Rscript --slave
library(MASS)
argv<-commandArgs(TRUE)
x<-as.numeric(argv[])
y<-as.numeric(argv[])
cat("x=",x,"\n")
cat("y=",y,"\n")
cat("x+y=",x+y,"\n")
cat("x^y",x^y,"\n")
write.matrix(matrix(:x,nrow=y),file="m.txt",sep=" ")
注:如果R语言中用到了其他的包,则在文件中加入相应的包名即可。
在命令行中修改arith.R为可执行文件:
> chmod +x arith.R
> ./arith.R 10 2
输出结果:
x= 1
y= 2
x+y= 3
x^y 1
m.txt文件中数据为:
1 3 5 7 9
2 4 6 8 10
参考文章:
1. http://blog.revolutionanalytics.com/2009/06/running-scripts-with-r-cmd-batch.html
2. http://book.2cto.com/201305/21969.html
R之批处理的更多相关文章
- R语言-Kindle特价书爬榜示例 & 输出HTML小技巧
博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html ---- 自从买了kindle以后,总是想要定期刷有没有便宜的书,amazon经常有些1元/2元 ...
- R语言-Kindle特价书爬榜示例 & 输出HTML小技巧(转)
自从买了kindle以后,总是想要定期刷有没有便宜的书,amazon经常有些1元/2元的书打特价,但是每次都去刷那些榜单太麻烦了,而且榜单又不能按照价格排名,捞书有点累 所以自己用R语言的rvest包 ...
- R语言实战(第二版)-part 1笔记
说明: 1.本笔记对<R语言实战>一书有选择性的进行记录,仅用于个人的查漏补缺 2.将完全掌握的以及无实战需求的知识点略去 3.代码直接在Rsudio中运行学习 R语言实战(第二版) pa ...
- [How to] 使用HBase协处理器---Endpoint客户端代码的实现
1.简介 不同于Observer协处理器,EndPoint由于需要同region进行rpc服务的通信,以及客户端出数据的归并,需要自行实现客户端代码. 基于[How to] 使用HBase协处理器-- ...
- 计算从哪天起应该购买预售火车票.cs
代码直接CSC编译即可. 计算从哪天起应该购买预售火车票.cs using System; using System.Diagnostics; using System.IO; class Progr ...
- [原]CentOS7安装Rancher2.1并部署kubernetes (二)---部署kubernetes
################## Rancher v2.1.7 + Kubernetes 1.13.4 ################ ##################### ...
- 利用python进行数据分析2_数据采集与操作
txt_filename = './files/python_baidu.txt' # 打开文件 file_obj = open(txt_filename, 'r', encoding='utf-8' ...
- Django项目:CRM(客户关系管理系统)--81--71PerfectCRM实现CRM项目首页
{#portal.html#} {## ————————46PerfectCRM实现登陆后页面才能访问————————#} {#{% extends 'king_admin/table_index.h ...
- R基础之批处理--R IN ACTION
1.5 批处理多数情况下,我们都会交互式地使用R:在提示符后输入命令,接着等待该命令的输出结果.偶尔,我们可能想要以一种重复的.标准化的.无人值守的方式执行某个R程序,例如,你可能需要每个月生成一次相 ...
随机推荐
- BZOJ 4500: 矩阵 差分约束
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=4500 题解: 从行向列建边,代表一个格子a[i][j],对每个顶点的所有操作可以合并在一 ...
- Matlab画柱状和折线对照图
上面是效果图,看着很不错吧,主要的问题在于用XTickLabel设置横坐标时候,横坐标会扩展,就是说如果label是[1 2 3],咱就做了三组试验,参数分别是 1 2 3,但是显示是1 2 ...
- 剑指offer--面试题21--相关
题目:设计包含min函数的栈,pop(),push(),min()的时间复杂度均为O(1) 自己所写代码如下:(写‘栈’的代码还是有些不熟练!) #include <iostream> u ...
- Linux 配置网络
1.vi /etc/sysconfig/network-scripts/ifcfg-eth0 2. # Advanced Micro Devices [AMD] 79c970 [PCnet32 LA ...
- iis7/7.5设置上传文件最大大小
本编今天接到一个客户的修改,说一个68M的pdf文件上传不上去,但是我本地开启断点调试了好几遍,都没有问题,能正常上传文件,由此确定不是代码问题.然后我试着上传5M左右的pdf却能正常的上传,然后上传 ...
- KafkaClient接口与Kafka处理请求的若干特性
(依据于0.10.0.0版本) 这个接口的唯一实现类就是NetworkClient,它被用于实现Kafka的consumer和producer. 这个接口实际上抽象出来了Kafka client与网络 ...
- mybatis sql注入安全
1.mybatis语句 SELECT * FROM console_operator WHERE login_name=#{loginName} AND login_pwd=#{loginPwd} 2 ...
- Sqli-labs less 36
Less-36 我们直接看到36关的源代码 上面的check_quotes()函数是利用了mysql_real_escape_string()函数进行的过滤. mysql_real_escape_st ...
- ubuntu修改ip、网关、dns等
一.使用命令设置Ubuntu IP地址 1.修改配置文件blacklist.conf禁用IPV6 sudo vi /etc/modprobe.d/blacklist.conf 表示用vi编辑器(也可以 ...
- WIN7设置wifi热点的方法
1.以管理员身份运行命令提示符:快捷键win+R→输入cmd→回车2.启用并设定虚拟WiFi网卡:运行命令:netsh wlan set hostednetwork mode=allow ssid=m ...