#tapply函数的应用
#对向量的子集进行操作
#rnorm(5)前五个正态分布
#runif(5)中间五个均匀分布
#rnorm(5,1)均值标准差为0的分布
x<-c(rnorm(5),runif(5),rnorm(5,1))#第三个为均值为1,方差为0的正态分布
f<-gl(3,5)#
tapply(x,f,mean)
tapply(x,f,mean,simplify=FALSE)
4-4 tapply
tapply:对向量的子集进行操作 tapply(参数):tapply(向量,因子/因子列表,函数/函数名)
x<-c(rnom(5),runif(5),rnorm(5,1))(15个元素,前5个来自正态分布,中间5个来自均匀分布,后5个来自均值为5,标准差为1的正态分布)
建立因子:f<-gl(3,5)(3代表这个因子包含3个水平,5代表每个水平下有5个元素)
tapply(x,f,mean)(对向量x按照因子的水平进行分组,对每一组求均值)
tapply(x,f,mean,simplify=FALSE)
tapply(向量,因子/因子列表,函数/函数名)
f <- gl(3,5) #设置因子,水平为3,每个水平有5个数据
tapply(x,f,mean,simplify=FALSE) #函数默认为TRUE—向量,FALSE—列表
tapply(x,f,mean,simplify=TRUE)simplify=TRUE是个默认的参数
本来返回的是列表,但是简化为向量若改为假则返回的是列表
x中包含十五个元素分别来自,正态分布,均匀分布,最后五个来自均值为1,标准差为0的正态分布
创建因子f<-gl(3,5)3表示有几个水平,5表示每个水平下有几个元素
tapply(x,f,mean)对于x这个向量按照因子的水平进行分组,对每个分组求均值
求出三组均值,1下面的数表示x前五个数字(第一个水平有五个数)的均值
tapply
tapply
rnorm 正态分布
runif 均匀分布
tapply(向量,因子/因子列表,函数名)可以对向量的子集进行操作,其中向量的参数量为n,每个参数的元素个数为k,要与gl()相对应
gl(n,k)产生因子水平的函数,其中n表示有几个水平,k表示每个水平下有几个元素
tapply(向量,因子/因子列表,函数/函数名,simplify = ): 对向量的子集进行操作;
用gl(水平数,每个水平下的元素数, labels = )创建因子;
tapply()
gl连续生成
tapply:对向量的子集进行操作
rnorm(5)//正态分布
rnorm(5,1)//均值为1标准差为0的正态分布
runif(5)//均匀分布
tapply(x,f,mean)//对向量x按照F因子的水平进行分组,对每一组求均值
#tapply函数的应用 #对向量的子集进行操作 x<-c(rnorm(5),runif(5),rnorm(5,1))#第三个为均值为1,方差为0的正态分布 f<-gl(3,5)# tapply(x,f,mean) tapply(x,f,mean,simplify=FALSE) #存在许多不懂得东西
tapply(向量,因子/因子列表,函数/函数名)
f<-gl(3,5) #3个水平,每个水平五个连续数
gl(k,n,length=,label=)构造一个因子序列。k为水平数,n为每个水平连续出现的次数,length为整个序列的长度,label为因子标签。
举例:gl(3,5,length=20,label=c('a','b','c'))
tapply(x, f, mean) # 输出x前五个数据均值,中间五个数据均值,后五个数据均值
tapply(x,f ,mean,simplify=FALSE) #输出没有简化的列表
tapply:对向量子集进行操作。
根据因子列表,每个水平下的元素个数来对向量进行划分(比如有三个水平,每个水平有4个数,就是将向量分成3组,每组4个数),对每组运行函数。
tapply(向量,因子/因子列表,函数/函数名)
因子的创建可通过函数:因子名 <- gl(因子包含的水平数,每个水平下有多少个元素)