R语言中常用函数手册

来源:互联网 发布:单片机gsm模块有哪些 编辑:程序博客网 时间:2024/05/18 01:34

一、数据创建

1.expand.grid()

提供的向量或因子所有组合构成的数据框

expand.grid(h=c(60,80), w=c(100, 300), sex=c("Male", "Female"))  

这里写图片描述

第一列就是括号内第一项数(字符)依次循环
第二列就是括号内第二项的数(字符)每个重复第一项数的个数之后循环
第三列就是括号内弟三项的数(字符)每个重复第一项数(字符)的个数乘以第二项的个数之后再循环

2.t()

行列转换

> a=matrix(1:30, 5,6)> a     [,1] [,2] [,3] [,4] [,5] [,6][1,]    1    6   11   16   21   26[2,]    2    7   12   17   22   27[3,]    3    8   13   18   23   28[4,]    4    9   14   19   24   29[5,]    5   10   15   20   25   30> ta=t(a)> ta     [,1] [,2] [,3] [,4] [,5][1,]    1    2    3    4    5[2,]    6    7    8    9   10[3,]   11   12   13   14   15[4,]   16   17   18   19   20[5,]   21   22   23   24   25[6,]   26   27   28   29   30

二、绘图

1.hist(x)

x的频数直方图

x = rowSums(expand.grid(1:6, 1:6))hist(x, breaks = seq(min(x) - 0.5, max(x) + 0.5, 1), main = "Number")#main = paste("Histogram of" , xname)

这里写图片描述

2.plot()

plot(x,y,xlim=c(0,100),ylim=c(0.4,1),type="o",lwd=2,col=2,pch=24,cex=1.5, yaxs="i",xaxs="i",xlab="Sample Ration(%)",ylab="Accuracy")

这里写图片描述

(1)x,y : 要画图的x轴内容和y轴内容(2)xlim,ylim: x轴和y轴的范围(3)type: 表示图的形状,是点、线、点线、阶梯线等等(4)lwd: 线的宽度(5)col: 颜色(6)pch: 点的形状(7)cex: 点的大小(8)yaxs,xaxa: plot默认画图时会在预留一部分坐标空间,设置为“i”后,就可以去掉预留空间(9) xlab,ylab:x轴和y轴的名称

3.lines()

lines(x,y,col="blue",type="o",lwd = 2,pch=5)#1.lines()函数做的是一般连线图,其输入是x,y的点向量,其功能相当于plot(x,y,type="1")。plot()函数被调用时即创建一副新图,而lines()函数是在已存在的图形上添加信息,并不能自己生成图形。

这里写图片描述

4.grid()

对图添加栅格

grid(nx=NA,ny=6,lwd=2)#1.nx,ny:分别表示x和y方向的虚线,当值为NA时,不对相应的方向分割,ny=6 表示将y轴等距分割为6

这里写图片描述

5.abline()

添加一条直线

abline(h=0.85,col="black",lty=1,lwd=2)h: y轴方向的高度 v: x轴的位置#1.abline()函数做的是回归线,其输入是回归模型对象。(1)abline(a,b)    表示画一条y=a+bx的直线(2)abline(h=y)    表示画出一条水平直线(3)abline(v=x)    表示画出一条竖直直线(4)abline(lm.obj) 表示绘出线性模型得到的线性方程

这里写图片描述

6.legend

添加图例

legend("bottomright",legend=c("AC正确率","MI归一化互信息"),col=c("blue","red"),pch=c(5,24),lty=1)#1.bottomright:图例的位置legend: 内容lty: 线的类型

这里写图片描述

7.matplot()

矩阵图。矩阵图的名称来自于其参数类型,它可以针对一个矩阵将所有列以曲线的形式表达出来。

matplot(x, y, type = “p”, lty = 1:5,
lwd = 1, lend = par(“lend”), pch = NULL, col = 1:6,
cex = NULL, bg = NA, xlab = NULL, ylab = NULL,
xlim = NULL, ylim = NULL, …, add = FALSE,
verbose = getOption(“verbose”))

参数x和y为输入的矩阵,做图的方式是用x的列为横轴方向的变量,y的列为纵轴方向的变量,然后用这些列依次作散点图(x的第一列对y的第一列,x的第二列对y的第二列,依次类推);如果这两个参数有一个缺失,那么x将被1:nrow(y)代替,y被非缺失
的参数矩阵代替;注意两个矩阵要么有一个列数为1,要么列数相等,否则会报错;后面设置颜色、线型等样式的参数type、lty、lwd、pch、col、cex、bg

8.matlines()矩阵线

matlines(x, y, type = “l”, lty = 1:5, lwd = 1, pch = NULL,
col = 1:6, …)

三、分布

1.set.seed()

该命令的作用是设定生成随机数的种子,种子是为了让结果具有重复性。如果不设定种子,生成的随机数无法重现。

> x<-rnorm(10) #随机生成10个随机数> x[1] 0.3897943 -1.2080762 -0.3636760 -1.6266727 -0.2564784 1.1017795 0.7557815[8] -0.2382336 0.9874447 0.7413901> x<-rnorm(10) #再次随机生成10个随机数> x[1] 0.08934727 -0.95494386 -0.19515038 0.92552126 0.48297852 -0.59631064 -2.18528684[8] -0.67486594 -2.11906119 -1.26519802> set.seed(5) #设定种子> x<-rnorm(10) # 在设定种子的前提下生成10个随机数> x[1] -0.84085548 1.38435934 -1.25549186 0.07014277 1.71144087 -0.60290798 -0.47216639[8] -0.63537131 -0.28577363 0.13810822> set.seed(5) # 设定种子> y<-rnorm(10)> y[1] -0.84085548 1.38435934 -1.25549186 0.07014277 1.71144087 -0.60290798 -0.47216639[8] -0.63537131 -0.28577363 0.13810822> x == y[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

从上面的例子可以发现,前两次生成的10个随机数都不一样。后两次在设定了相同的种子前提下,生成的随机数是相同的。

2.predict()

基本语法

predict(object, newdata)

object是已使用lm()函数创建的公式。
newdata是包含预测变量的新值的向量。

3.常用的连续分布函数

#若是人的身高是均值为70英寸,标准偏差为3英寸的正态分布随机变量,请计算一个人不高于65英寸的概率,即计算P(X<=65)的概率,X~N(70,3)> pnorm(65, mean=70, sd=3)[1] 0.04779035分布函数:P(X<=x)正态分布 pnorm(x, mean, sd)学生t分布 pt(x, df)指数分布 pexp(x, rate)卡方分布 pchisq(x, df)

四、帮助和基础

1.attach(x)

将x指向R的搜索路径;x可以是一个列表、数据库,或者是由save创建的R data file.使用search()来显示搜索路径。

三个函数均是为了简化代码量存在,举个简单的例子,一年级有三个小明,分别在不同的班级,但在attach(一班)和detach(一班)之间的所有代码提到小明都是一班的小明,这样不用每次写到小明的时候都得一班小明。但他们的缺点就是在attach()和detach()之外还有一个叫小明的,R语言就不知道哪个小明是哪个。

同样的with()函数,所有的​代码就只在括号内起作用,出了括号就不认人了;例如with(一班{小明})。他的缺点也很突出,如果来了一个新同学叫小红,则再with内,“小红<-新同学”,出了with就不知道小红是谁了。但“小红<<-新同学”这种赋值方法是可以在with外部生效的。

注:双箭头(<<-)表示给上一层环境中的变量赋值

id <- c(1,2,3)name <- c("Jack","Tom","Mark")age <- c(22,30,27)mydata <- data.frame(id,age,name)mydata> mydata  id age name1  1  22 Jack2  2  30  Tom3  3  27 Mark

这里呢,变量mydata里面包含的是一个表格,若是想调用其中的数据该怎么办呢?

1.1 用“$”符号
> mydata$age[1] 22 30 27> mydata$age[3][1] 27
1.2 用attach()命令
> attach(mydata)The following objects are masked _by_ .GlobalEnv:    age, id, name> age[1] 22 30 27> age[3][1] 27
1.3 利用with()函数
> with(mydata,{age})[1] 22 30 27#with()函数适用于当同名变量出现多次,避免程序定位错误的情况;但with也有个弊端,就是只在括号内部有效,在with()的括号内外,信息是完全隔绝的,所以当然不能够用with调用程序其他位置的变量

2.detach(x)

attach(x)的逆运算

3.str(a)

str()是structure(结构)的缩写,它能对任何R数据结构提供简洁明了的描述。

五、模型拟合

1.fitdistr

需要用到MASS包

> library(MASS)> fitdistr(dat, densfun = "weibull", lower = 0)      shape          scale        0.60543339   155.13116924    (0.06472455)  (50.00658912)#第一行没有括号的数字是所拟合的参数

2.coef()

coef是一个通用的函数提取返回的对象建模功能模型系数。

六、检验

1.survreg()

适合参数生存回归模型

survreg(formula, data, dist, subset)

参数解释:
formula形如Y~X1+X2+X3,但注意生存分析中的应变量Y通常为Surv()函数处理的生存时间;data是数据在R中的名字,subset可以对数据进行筛选。
dist为因变量的分布,包括weibull(weibull分布)、exponential(指数分布)、gaussian(伽马分布)、logistic(logistic分布)、loglogistic(对数logistic分布)和lognormal(对数正态分布)。

ovarianhead(ovarian)fittest=survreg(Surv(futime,fustat)~ecog.ps+rx,ovarian,dist="exponential")summary(fittest)Call:survreg(formula = Surv(futime, fustat) ~ ecog.ps + rx, data = ovarian,     dist = "exponential")             Value Std. Error      z        p(Intercept)  6.962      1.322  5.267 1.39e-07ecog.ps     -0.433      0.587 -0.738 4.61e-01rx           0.582      0.587  0.991 3.22e-01Scale fixed at 1 Exponential distributionLoglik(model)= -97.2   Loglik(intercept only)= -98    Chisq= 1.67 on 2 degrees of freedom, p= 0.43 Number of Newton-Raphson Iterations: 4 n= 26 #分析:p=0.43>0.05因此两条生存曲线分布无显著性差异

七、高级数据处理

1.expression()

expression函数可以有一个或多个参数,它把全部参数当成一个列表,每个参数都被转成一个表达式向量,所以它的返回值是表达式列表,每个元素都是表达式类型对象,返回值的长度等于参数的个数

R绘图函数对表达式中包含的函数名和它们的参数首先应用Tex文本格式化规则进行处理,这种规则的具体情况可以使用 ?plotmath 进行查看,主要是一些数学公式和符号的表示方法

main=expression(paste("Weibull-Fit ", hat(S)(t), " mit SE"))#plot函数中的标题

八、数学

1.集合运算

#首先对集合A,B,C赋值> A<-1:10> B<-seq(5,15,2)> C<-1:5#求A和B的并集> union(A,B) [1]  1  2  3  4  5  6  7  8  9 10 11 13 15#求A和B的交集> intersect(A,B)[1] 5 7 9#求A-B> setdiff(A,B)[1]  1  2  3  4  6  8 10#求B-A> setdiff(B,A)[1] 11 13 15#检验集合A,B是否相同> setequal(A,B)[1] FALSE#检验元素12是否属于集合C> is.element(12,C)[1] FALSE#检验集合A是否包含C> all(C%in%A)[1] TRUE> all(C%in%B)[1] FALSE

九、编程

1.ifelse

向量化的函数

> x <- 1:10> y <- ifelse(x>5, 0, 10)  > y   [1] 10 10 10 10 10  0  0  0  0  0#处理缺失值> x <- c(1, 2, NA, NA, 5) > x[1]  1  2 NA NA  5> x <- ifelse(is.na(x), 0, x) > x [1] 1 2 0 0 5
原创粉丝点击