认识apply
> ##apply(x,MARGIN,FUN,……)
> ##x是要处理的对象,可以是矩阵、数组、数据框
> ##MARGIN:如果是矩阵则值为1或2,1每一行,2每一列。FUN要用的函数。……FUN所需额外参数
> ##动物园,观察了3天内老虎、狮子、豹子出现的次数,列出各种动物出现的最高次数。
> info <- matrix(c(8, 9, 6, 5, 7, 2, 10, 6, 8),ncol = 3)
> colnames(info) <- c("tiger", "lion", "leopard")
> row.names(info) <- c("day1", "day2", "day3")
> info
tiger lion leopard
day1 8 5 10
day2 9 7 6
day3 6 2 8
> apply(info, 2, max)
tiger lion leopard
9 7 10
sapply lapply
> ##sapply()可处理数据框、向量、list。格式为sapply(x,FUN,……)
> ##如果处理完list/数据框/向量后,返回的数字,则返回的结果会被简化成向量
> ##如果处理完list/数据框后,返回的向量有相同的长度,则返回的结果被简化为矩阵
> ##如果是其他情况则返回的是list
>
> ## lapply()所传回来的是list。格式为lapply(x,FUN,……)
> ## x可以是向量、数据框和list
tapply
> ## tapply()主要用于对一个因子或因子列表,执行指定的函数调用,最后获得汇总信息。
> ## 格式tapply(x, INDEX, FUN,……)
> ## x处理对象,通常为向量,也可是其他数据形态。INDEX是因子或分类字符串向量或因子列表
>
> ## 使用state.region,计算美国4大区包含的州的数量
>
> tapply(state.region, state.region, length)
Northeast South North Central West
9 16 12 13
> ## 用state.x77和state.region,计算美国4大区各区百姓平均收入。
> head(state.x77)
Population Income Illiteracy Life Exp Murder HS Grad Frost Area
Alabama 3615 3624 2.1 69.05 15.1 41.3 20 50708
Alaska 365 6315 1.5 69.31 11.3 66.7 152 566432
Arizona 2212 4530 1.8 70.55 7.8 58.1 15 113417
Arkansas 2110 3378 1.9 70.66 10.1 39.9 65 51945
California 21198 5114 1.1 71.71 10.3 62.6 20 156361
Colorado 2541 4884 0.7 72.06 6.8 63.9 166 103766
> zhang19 <- function()
+ {
+ str_t <- as.character(state.region) # 转成字符串
+ income <- state.x77[,2] # 各州收入
+ names(income) <- NULL #去掉各州输入向量名称
+ a.income <- tapply(income,
+ factor(str_t, levels = c("Northeast", "South", "North Central", "West")),
+ mean)
+ return(a.income)
+ }
> zhang19()
Northeast South North Central West
4570.222 4011.938 4611.083 4702.615
网友评论