1. lapplyeg:x=list(a=1:10,b=c(11,21,31,41,51))
lapply(x,mean) 或 sapply(x,mean)
lapply与sapply均为返回x中元素的平均值,sapply函数可将lapply的返回结果进行化简x=1:4
lapply(x,runif) runif意为从一个均匀分布里抽取若干个数出来,默认是从0到1 的均匀分布
lapply(x,runif,min=0,max=100) 从0到100的均匀分布里抽取若干个数出来x=list(a=matrix(1:6,2,3),b=matrix(4:7,2,2))
lapply(x,function(m) m[1,]) 此处m代表传入矩阵,函数运行的是矩阵的第一行
2.applyx=matrix(1:16,4,4)
apply(x,2,mean) 返回x中第二列的平均
apply(x,2,sum) 返回x中第二列的和
rowSums(x) 对每一行求和
rowMeans(x) 对每一行求平均
colSums(x) 对每一列求和
colMeans(x) 对每一列求平均x=matrix(rnorm(100),10,10) 从正态分布中随机取100个数据,并将其排成10行10列
apply(x,1,quantile,probs=c(0.25,0.75)) quantile意为求数据的百分位点 probs对quantile进行限定,以语句可返回矩阵x中每一行的25%和75%分位点的数据x=array(rnorm(2*3*4),c(2,3,4))
apply(x,c(1,2),mean)
3.mapplylist(rep(1,4),rep(2,3),rep(3,2),rep(4,1)) 第一个元素为4个1,第二个元素为3个2.........
mapply(rep,1:4,4:1) 1:4为rep函数的第一个参数,4:1为第二个参数,与上面的语句含义相同,即将1重复4次,2重复3次,3重复2次,4重复1次。s=function(n,mean,std){rnorm(n,mean,std)}
s(4,0,1)
mapply(s,1:5,5:1,2)
n代表从分布中抽取的数据的个数
mean和std分别代表随机分布的总体的均值和标准差
rnorm(n,mean,std 代表是从均值为mean方差为std的正态分布中抽取n个数据
s(4,0,1) 代表是从均值为0方差为1的正态分布中抽取4个数据
mapply(s,1:5,5:1,2) 应用s函数,返回的结果是一个列表
第一个元素是从均值为5,方差为2的正态分布中抽取的1个数据
第一个元素是从均值为4,方差为2的正态分布中抽取的2个数据
第一个元素是从均值为3,方差为2的正态分布中抽取的3个数据...........(一一对应)
mapply(s,1:5,5:1,2) 与 ,list(s(1,5,2),s(2,4,2),s(3,3,2),s(4,2,2),s(5,1,2)) 返回的结果是一样的,可以看出使用mapply能让语句更简单
4.tapplyx=c(rnorm(5),runif(5),rnorm(5,1)) x包含15个元素,前五个元素来自于正态分布,中间五个元素来自于均匀分布,最后五个元素来自于均值为1,标准差为0的正态分布
f=gl(3,5) 建立因子需要gl函数,第一个参数表示该因子有3个水平,第二个参数表示每个水平下有5个元素
tapply(x,f,mean) 对x这个向量按照g的水平进行分组,并对每组求均值
tapply(x,f,mean,simplify=FALSE) 得到的是一个未经化简的列表
5.splitx=c(rnorm(5),runif(5),rnorm(5,1))
f=gl(3,5)
split(x,f) 返回水平1对应的x中的前五个元素,水平2对应的中间五个元素,水平3对应的最后五个元素
lapply(split(x,f),mean) 返回分组后每一水平对应的5个元素的平均值 s=split(airquality,airquality$Month) 返回airquality中关于每一月份的数据table(airquality$Month) 查询每一月份包含的数目head(airquality)
lapply(s, function(x) colMeans(x[,c("Ozone","Wind","Temp")]))
对s应用function(x),求得关于每个月ozone、wind、temp的均值,colMeans求列均值
sapply(s, function(x) colMeans(x[,c("Ozone","Wind","Temp")])) sapply可将结果简化
sapply(s, function(x) colMeans(x[,c("Ozone","Wind","Temp")],na.rm = TRUE))
有了na.rm则可将ozone、wind、temp中的缺失值去除掉,然后计算列均值
6.排序x=data.frame(v1=1:5,v2=c(10,7,9,6,8),v3=11:15,v4=c(1,1,2,2,1))
sort(x$v2) 可对x中的v2列进行升序排列
sort(x$v2,decreasing = TRUE) 可对x中的v2列进行降序排列
order(x$v2) 可对x中的v2列进行升序排列,但返回的不是内容本身,而是其所在的行号
x[order(x$v2),] 按照v2列升序的行号的排列对整个数据框进行排列
x[order(x$v4,x$v2),] 先按照v4进行升序排列,之后再按照v2进行升序排列
x[order(x$v4,x$v2,decreasing = TRUE),] 先按照v4进行降序排列,再按照v2进行降序排列
7.总结数据信息head(airquality,10) 查看airquality的前十行,默认是前六行
tail(airquality,8) 查看airquality的后八行,默认是后六行
summary(airquality) 查看airquality每一列的最小值、第一个分位点、中间值、均值、第三个分位点、最大值以及缺失值的个数
str(airquality) 查看airquality的基本情况如变量数等table(airquality$Ozone) 查看airquality中的Ozone的具体数值,及每一数值出现的次数,不包括缺失值
table(airquality$Ozone,useNA='ifany') 还可以总结缺失值的个数
table(airquality$Month,airquality$Day) 返回的是二维数据,即查询某月某日的数据的个数any(is.na(airquality$Ozone)) 判断是否有缺失值
sum(is.na(airquality$Ozone)) 计算缺失值的总数
all(airquality$Month<12) 判断月份是不是都小于12xtabs(Freq~Class+Age,data=Titanic) xtabs可建立一个组合框,以class和age来计算频数
x=xtabs(Freq~Class+Age,data=Titanic)
ftable(x) 可将结果以更加扁平化的形式显示出来,内容与xtabs函数返回的结果一致
object.size(airquality) 查看airquality的大小(字节)
8总结