#tapply #对向量的子集进行操作
#tapply参数):tapply(向量,因子,函数)
x=c(rnorm(5),runif(5),rnorm(5,1))
x
## [1] 0.51151761 -0.21053255 -1.27966730 1.06379438 -0.08071964
## [6] 0.76615652 0.93555260 0.12845367 0.74493294 0.59556613
## [11] 0.18575110 0.06784031 -0.07200961 -1.20696432 -0.14276227
#x这个向量包含15个元素
#他的前五个元素来自于正态分布
#中间五个数据来自于均匀分布
#最后五个数据来自于均值为一,标准差为0的正态分布
f=gl(3,5)
#接下来我们需要建立一个因子,用f表示,建立因子需要用到一个新的函数gl
#gl需要两个参数,第一个参数3代表他有3个水平(levels)
#第二个参数代表的是每个水平下有多少个元素,表示每个水平下有五个元素。
f
## [1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
## Levels: 1 2 3
tapply(x, f, mean)#对x这个向量按f因子的水平进行分组,每一组求平均值
## 1 2 3
## 0.0008784998 0.6341323719 -0.2336289573
#x数据中前五个数据是和f中的前五个1对应的,所以上述命令得出的结果,中的1表示x中前五个数据的均值,2表示中间五个数据的均值,3下面的数据表示x中最后五个数据的均值
tapply(x,f,mean,simplify = FALSE)
## $`1`
## [1] 0.0008784998
##
## $`2`
## [1] 0.6341324
##
## $`3`
## [1] -0.233629