R語言apply函數簇


R語言中的apply函數簇可以不通過for循環方式,實現對象迭代處理。可以有效提高運行效率。

包括:lapply、sapply、vapply、mapply、tapply、apply。

lapply

lapply接收一個向量和一個函數作爲函數。

lapply(list,FUN,…)

示例:

#x爲列表
x <- list(a=1:5,b=6:10,c=11:15)
#x
x
$a
[1] 1 2 3 4 5

$b
[1]  6  7  8  9 10

$c
[1] 11 12 13 14 15
#lapply函數
lapply(x, mean)
$a
[1] 3

$b
[1] 8

$c
[1] 13

sapply

類似於lapply,以向量形式返回。

sapply(list,FUN,…)

示例:

#列表
x <- list(a=1:5,b=6:10,c=11:15)
#spply函數
sapply(x, mean)
 a  b  c 
 3  8 13 
#結果同lapply,以向量形式返回。

vapply

vapply函數通過一個附加參數來設定每次迭代返回的模板。以模板定義返回。它是sapply函數的安全升級版。

vapply(list,FUN,FUN.VAlUE=type,…)

示例:

x <- list(a=1:5,b=6:10,c=11:15)
#指定模板返回數據類型爲數值型
vapply(x, mean,c(1))
 a  b  c 
 3  8 13 

mapply

lapply()和sapply()函數在一個向量上迭代。mapply可以實現多個向量的迭代。返回標量、多元素向量。
mapply(FUN,…)

示例:

x1 <- list(a = c(1:10), b = c(11:20))
x2 <- list(c = c(21:30), d = c(31:40))
#mapply函數
mapply(sum, x1$a, x1$b, x2$c, x2$d)
 [1]  64  68  72  76  80  84  88  92  96 100

tapply

可以進行分組迭代。

tapply(X,index,FUN)

x爲向量,index爲向量索引,FUN爲函數。

#生成向量x
x <- c(10,25,26,30,35)
#建立x的索引
b <- c('A','B','A','B','A')
#按索引分組迭代求和
tapply(x, b, sum)
 A  B 
71 55 

apply

apply函數將一個函數應用到矩陣或數組的某個邊際(margin)或維度。

apply(x,margin,FUN)

參數 描述
x 矩陣或數組
margin margin=1,指定行維度。margin=2,指定列維度。
FUN 函數

示例:

#生成一個2行矩陣
x <- matrix(1:10,nrow = 2)
#矩陣
x
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10
#按行進行數據相加
apply(x, 1, sum)
#第一行總和25,第二行總和30
[1] 25 30
#按列進行數據相加
apply(x, 2, sum)
#依次展示5列數據相加的情況
[1]  3  7 11 15 19

RR語言小白速通
R懂點R語言
歡迎分享收藏關注

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章