1. apply 对数组或者矩阵行或者列使用函数
用法:apply(X, MARGIN, FUN, ...)
X:矩阵或数组;
MARGIN:1表示行,2表示列,也可以是c(1,2);
FUN:应用的函数;
···:所应用的函数的参数;
x <- cbind(x1 = 3, x2 = c(4:1, 2:5)) dimnames(x)[[1]] <- letters[1:8] x #x为矩阵
## x1 x2
# 计算矩阵x的每列均值: col.sums <- apply(X = x, MARGIN = 2, FUN = mean) # 计算矩阵x的每行均值: row.sums <- apply(X = x, MARGIN = 1, FUN = mean) # 在原矩阵的基础上增加边际和: rbind(cbind(x, Rtot = row.sums), Ctot = c(col.sums, sum(col.sums)))
## x1 x2 Rtot
# 对矩阵x的列进行排序: apply(X = x, MARGIN = 2, FUN = sort)
## x1 x2
2. lapply 对列表或者向量使用函数
用法:lapply(X, FUN, ...)
x <- list(a = 1:10, beta = exp(-3:3), logic = c(TRUE, FALSE, FALSE, TRUE)) x #列表x有3个元素
## $a
lapply(X = x, FUN = mean) #计算列表x的每个元素的均值
## $a
lapply(X = x, FUN = quantile, probs = 1:3/4) #计算列表的分位数
## $a
3. sapply 对列表或者向量使用函数,是lapply的友好版本
用法:sapply(X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE)
x <- list(a = 1:10, beta = exp(-3:3), logic = c(TRUE, FALSE, FALSE, TRUE)) sapply(X = x, FUN = mean)
## a beta logic
i39 <- sapply(3:9, seq) #生成一个列表 i39
## [[1]]
sapply(i39, fivenum) #统计列表每个元素的五数总括
## [,1] [,2] [,3] [,4] [,5] [,6] [,7]