一、apply
apply(
X, # 数组、矩阵、数据框
MARGIN, # 1按行、2按列、c(1,2)同时按行和列
FUN, # 施加于行或列的函数
...)# FUN的附加参数
举例:
x <- cbind(x1 = 3, x2 = c(4:1, 2:5))
dimnames(x)[[1]] <- letters[1:8]
x
# x1 x2
#a 3 4
#b 3 3
#c 3 2
#d 3 1
#e 3 2
#f 3 3
#g 3 4
#h 3 5
apply(x, 2, mean)
# x1 x2
# 3 3
apply(x, 2, sort)
# x1 x2
#[1,] 3 1
#[2,] 3 2
#[3,] 3 2
#[4,] 3 3
#[5,] 3 3
#[6,] 3 4
#[7,] 3 4
#[8,] 3 5
二、lapply
lapply(
X, #向量或列表
FUN, #施加于X中每个元素的函数
...) #FUN的附加参数
lapply会返回一个与X具有相同长度的列表。举例:
tmp = lapply(x, as.character)
tmp
#[[1]]
#[1] "3"
#[[2]]
#[1] "3"
#[[3]]
#[1] "3"
#后面结果我省略了
class(tmp) #查看tmp类型为列表
#[1] "list"
三、sapply
sapply(
X,
FUN,
...,
simplify = TRUE,
USE.NAMES = TRUE)
sapply是lapply的一个变体,用起来更方便,它会返回一个向量或矩阵,而不是列表,sapply(x, f, simplify = FALSE, USE.NAMES = FALSE)
等同于lapply(x, f)
。举例:
tmp2 <- sapply(x,as.character)
tmp2
# [1] "3" "3" "3" "3" "3" "3" "3" "3" "4" "3" "2" "1" "2" # "3" "4" "5"
class(tmp2)
#[1] "character"
四、replicate
replicate(
n, #数值:代表要重复的次数
expr, #要重复求值的表达式
simplify = "array")
replicate是sapply的一个变体,用于对一个表达式进行重复求值(这通常涉及随机数的生成)。举例:
replicate(20, mean(rnorm(10))) #随机生成符合正态分布的的10个数求平均值,再把该过程重复20次
# [1] -0.16991042 -0.48814247 -0.15974617 -0.04962954 #0.15945067
# [6] -0.24717244 -0.16891641 -0.73591569 0.41282610 #0.31573646
#[11] 0.45103341 0.26704406 -0.14040780 -0.16512758 #0.09814767
#[16] 0.51196283 -0.29155559 0.37325168 0.13969860 #0.25289411