一、apply
apply(
X, # 數(shù)組、矩陣、數(shù)據(jù)框
MARGIN, # 1按行、2按列、c(1,2)同時(shí)按行和列
FUN, # 施加于行或列的函數(shù)
...)# FUN的附加參數(shù)
舉例:
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中每個(gè)元素的函數(shù)
...) #FUN的附加參數(shù)
lapply會(huì)返回一個(gè)與X具有相同長(zhǎng)度的列表。舉例:
tmp = lapply(x, as.character)
tmp
#[[1]]
#[1] "3"
#[[2]]
#[1] "3"
#[[3]]
#[1] "3"
#后面結(jié)果我省略了
class(tmp) #查看tmp類型為列表
#[1] "list"
三、sapply
sapply(
X,
FUN,
...,
simplify = TRUE,
USE.NAMES = TRUE)
sapply是lapply的一個(gè)變體,用起來更方便,它會(huì)返回一個(gè)向量或矩陣,而不是列表,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, #數(shù)值:代表要重復(fù)的次數(shù)
expr, #要重復(fù)求值的表達(dá)式
simplify = "array")
replicate是sapply的一個(gè)變體,用于對(duì)一個(gè)表達(dá)式進(jìn)行重復(fù)求值(這通常涉及隨機(jī)數(shù)的生成)。舉例:
replicate(20, mean(rnorm(10))) #隨機(jī)生成符合正態(tài)分布的的10個(gè)數(shù)求平均值,再把該過程重復(fù)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