R语言中常用函数手册

一、数据创建

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 name
1  1  22 Jack
2  2  30  Tom
3  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(对数正态分布)。

ovarian
head(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-07
ecog.ps     -0.433      0.587 -0.738 4.61e-01
rx           0.582      0.587  0.991 3.22e-01

Scale fixed at 1 

Exponential distribution
Loglik(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
  • 47
    点赞
  • 391
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值