【R语言】常用基本函数

向量操作的函数

1、z是一个向量

sum(z)               #求和
mean(z)              #求平均值
sd(z)                #计算方差
median(z)            #求中位数
sort(z)              #按从小到大排序append(z,2:3,after) 添加元素
append(z,2:3,after=2)  #在向量z后面的第2个位置后面添加2和3
矩阵操作的函数

A,B,C是矩阵


t(A)                # 得到矩阵A的转置矩阵
dim(A)              #求矩阵A的行数和列数
nrow(A)             #求矩阵的行数
ncol(A)             #求矩阵的列数
rbind(B,C)          #按行合并矩阵
cbind(B,C)          #按列合并矩阵
分组函数
1、apply函数

对一个数组按行或者按列进行计算
apply(xy,1,sum) 对矩阵xy按行求和
apply(xy,2,mean)对矩阵xy按列求平均数
使用格式为:
apply(X, MARGIN, FUN, …)
其中X为一个数组;MARGIN为一个向量(表示要将函数FUN应用到X的行还是列),若为1表示取行,为2表示取列,为c(1,2)表示行、列都计算。

x <- runif(10,-1,1);x     #生成均匀分布随机数,第一个参数n为个数,第二个参数min为下限,第三个max为上限
y <- rnorm(10,0.5,1);y    #生成正态分布随机数,第一个参数n为个数,第二个mean=0为正态分布均值,sd=1位正态分布的标准差
xy <- cbind(x,y);xy       #根据列进行合并
apply(xy,1,sum)           #对xy按行进行求和运算
apply(xy,2,mean)          #对xy进行按列求平均值
2、tapply函数

进行分组统计

tapply(X, INDEX, FUN = NULL, …, simplify = TRUE)
其中X通常是一向量;INDEX是一个list对象,且该list中的每一个元素都是与X有同样长度的因子;FUN是需要计算的函数;simplify是逻辑变量,若取值为TRUE(默认值),且函数FUN的计算结果总是为一个标量值,那么函数tapply返回一个数组;若取值为FALSE,则函数tapply的返回值为一个list对象。需要注意的是,当第二个参数INDEX不是因子时,函数 tapply() 同样有效,因为必要时 R 会用 as.factor()把参数强制转换成因子。

t1 <- factor(rep(1:4,length=14),levels=1:5,labels=c("A","B","C","D","E"));t1
t2 <- c(1:14) ;t2
tapply(t2,t1,sum)        #按照t1的标签对t2进行分组求和,返回值为标量值
tapply(t2,t1,sum,simplify=FALSE)  #按照t1的标签对t2进行分组求和,并且返回值为list对象
3、lapply()

3、lapply()对列表对象调用函数进行计算

lapply(X, FUN, …)
lapply的返回值是和一个和X有相同的长度的list对象,这个list对象中的每个元素是将函数FUN应用到X的每一个元素。其中X为List对象(该list的每个元素都是一个向量),其他类型的对象会被R通过函数as.list()自动转换为list类型。

L1 <- list(a=1:20,b=runif(30,-2,5),d=matrix(c(1:10))) #创建一个列表
lapply(L1,quantile)  #对列表对象L1求四分位数

quantile 求四分位数
四分位数为对一个列表排序后的,)%0,%25,%50,%75,100%位置上的数

4、sapply()

函数sapply是函数lapply的一个特殊情形,对一些参数的值进行了一些限定,其使用格式为:
sapply(X, FUN,…, simplify = TRUE, USE.NAMES = TRUE)
sapply(, simplify = FALSE, USE.NAMES = FALSE) 和lapply()的返回值是相同的。如果参数simplify=TRUE,则函数sapply的返回值不是一个list,而是一个矩阵;若simplify=FALSE,则函数sapply的返回值仍然是一个list。

sapply(L1,quantile,simplify=FALSE,use.names=FALSE)  #对L1求四分位数,返回结果为列表
sapply(L1,quantile,simplify=TRUE,use.names=FALSE)   #对L1求四分位数,返回结果为矩阵
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值