threecifanggen的个人博客分享 http://blog.sciencenet.cn/u/threecifanggen

博文

学一点R语言吧

已有 7992 次阅读 2013-7-5 19:14 |个人分类:技术宅|系统分类:科研笔记| R语言, 数据

大数据时代,统计学最为热门的软件要数R语言了,所以在这发一篇技术贴讨论R语言的使用。希望大家对数据挖掘或者统计感兴趣的同学可以基本了解R语言。

首先,与Matlab不同,R语言的处理单元不是矩阵而是向量。。。。这对于数据因子的组合很有好处。

其赋值语句也是贝尔实验室特有的符号,“<-”或“->”。很好的规避了与等号的歧义,但是如果要小于号和符号连用,比如判断表达式“b<-2”的时候就要注意加空格了。

所以向量的赋值语句可以写为

<向量名> <- c(向量各个维度的值)(如b<-c(1,2,3))

在学一个数据框的定义,就可以编写基本上本科能用到的大部分数据分析代码了。

R语言的第二特点就是开源,这一特点造成全世界统计工作者能最快的为R更新Packages,而packages就是作为数据统计的基本集合单元,而其数量和种类绝对可以帮助你做任何事。

packages从我了解的部分主要有几种类别:

 

1、数据统计(这是R最为基本的功能)。有各种最新的统计方法可以选择,从聚类,到FRD控制,正交分析。 
2、绘图。这是所有人喜欢它的主要原因,R的确可以做各种种类的分析图。还有三大绘图系统,lattice,grid和ggplot2,可以满足所有开发者重新组合甚至创造新的统计图样。 
3、数据挖掘。主要看到的就有TM(text mining)方面的东西,这就是所谓R在大数据时代的有力优势。 
4、机器学习,神经网络。这部分好像比较弱,当然主要是相较于Matlab而言。 
5、专业数据包。包括各行业的统计数据要求,比如CHIP数据的处理,PCR数据,地理数据等等的分析,由于知识有限,只能列举几个知道的门类。

 

以下给几个我曾经做的例子。。。

1、基本的误差棒图的绘制


这是我的数据。

library(ggplot2) 
myData<-read.table("bar.csv",header=TRUE,sep=",") 


p<-ggplot(myData,aes(Time,Mean,colour=Factors)) 
p+ 
geom_point(aes(size=1.5)) + 
geom_errorbar(aes(ymax = Mean + tStd, ymin = Mean- tStd, width = 0.3))+ 

geom_line()

这是输入的代码。得出的结果就是


2、多因子分析矩阵图这个对于各位做回归或主因子分析都很有用处的一幅图,在R里也就是简单的几句语句能完成的将CitricEx、CitricEn、OsFRDL1、OsFRDL2、OsFRDL4数据录入之后,只需这一句:

scatterplotMatrix(~CitricEx+CitricEn+OsFRDL1+OsFRDL2+OsFRDL4|Factors,data=PCR_Acid,smoother=NULL,main="Factors Analysis Matrix")

就能做出以下图样


3、图形的组合

在论文中很头疼的一项工作就是各种图的裁剪对齐,这部分工作往往都要交给PS完成,但在R里,只需par()函数就能很好的组合图形,甚至可以组合两排三幅图的布局。

在经典的ggplot2图形系统中,也可使用grid.arrange 函数直接一部对其图形。

比如以下我用ggplot2制作了4幅箱形图,只需先将图储存在a、b、c、d四个变量里,就可以直接调用函数排列图形。代码如下:

a<-qplot(Factor,AppleInside,data=AcidData,geom=c("boxplot","jitter"),fill=Factor,xlab="Factors",ylab="Endogenous Malic Aid") 
b<-qplot(Factor,LemonInside,data=AcidData,geom=c("boxplot","jitter"),fill=Factor,xlab="Factors",ylab="Endogenous Citric Acid") 
c<-qplot(Factor,GrassInside,data=AcidData,geom=c("boxplot","jitter"),fill=Factor,xlab="Factors",ylab="Endogenous Oxalic Aid") 
d<-qplot(Factor,LemonOutside,data=AcidData,geom=c("boxplot","jitter"),fill=Factor,xlab="Factors",ylab="Exogenous Citric Aid") 

grid.arrange(a,b,c,d , ncol=2, nrow=2) #这里将图分成了2×2的矩阵 

绘制的结果是:



还有一个问题莫过于高品质的图形输出,很多论文要求图形的dpi要在300以上,在R里只需一个绘图语句块就可以搞定。

tiff(file = "Acid Summary.tiff", res = 300, width = 3200, height = 2400)
a<-qplot(Factor,AppleInside,data=AcidData,geom=c("boxplot","jitter"),fill=Factor,xlab="Factors",ylab="Endogenous Malic Aid") 
b<-qplot(Factor,LemonInside,data=AcidData,geom=c("boxplot","jitter"),fill=Factor,xlab="Factors",ylab="Endogenous Citric Acid") 
c<-qplot(Factor,GrassInside,data=AcidData,geom=c("boxplot","jitter"),fill=Factor,xlab="Factors",ylab="Endogenous Oxalic Aid") 
d<-qplot(Factor,LemonOutside,data=AcidData,geom=c("boxplot","jitter"),fill=Factor,xlab="Factors",ylab="Exogenous Citric Aid") 
grid.arrange(a,b,c,d , ncol=2, nrow=2) 
dev.off()

这个语句块就是将刚才的箱形图组输出成tiff文档的语句块,蓝色部分表示将文件名命名为Acid Summary.tiff,dpi设置为300,大小是3200×2400.这绝对满足大部分编辑的要求了。

关于其他一些功能以后有机会再续,希望对想了解R语言的人有点帮助。



https://wap.sciencenet.cn/blog-955638-705668.html


下一篇:R语言学习过程

2 徐大彬 吕鹏辉

该博文允许注册用户评论 请点击登录 评论 (6 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2021-10-20 05:10

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部