R語言apply系列函數(shù)實例詳解
前言
在R語言中,apply系列函數(shù)可以對向量、矩陣、數(shù)據(jù)框一次性對整體數(shù)據(jù)應(yīng)用函數(shù)運算,非常方便
一、apply()函數(shù)
定義:apply()函數(shù)按矩陣的行或列方向應(yīng)用指定函數(shù)。
apply( x # 數(shù)組或矩陣 MARGIN #應(yīng)用函數(shù)的方向,1行2列 FUN # 應(yīng)用的函數(shù) ) # 返回值根據(jù)數(shù)據(jù)Data的數(shù)據(jù)類型與Fun的返回值自動判斷返回的數(shù)據(jù)類型
這里舉個例子:
s <- matrix(1:9,ncol = 3) apply(s,1,sum) apply(s,2,sum)
即可得到下列結(jié)果:
apply(s,1,sum)
[1] 12 15 18
apply(s,2,sum)
[1] 6 15 24
在舉一個R語言自帶的鳶尾花數(shù)據(jù)集例子:
apply(iris[,1:4],2,sum)
結(jié)果如下:
apply(iris[,1:4],2,sum)
Sepal.Length Sepal.Width Petal.Length Petal.Width
876.5 458.6 563.7 179.9
如果小伙伴們對鳶尾花數(shù)據(jù)集不了解可以輸入iris查看。
于此同時R語言中還定義了rowSums(),rowMeans(),colSums(),colMeans()函數(shù)對行列進行求和、均值的函數(shù)。使用方式也很簡單。
二、lapply()函數(shù)
定義:lapply()函數(shù)以列表的形式返回函數(shù)的結(jié)果
lapply(
X #向量、列表、表達式、數(shù)據(jù)庫
FUN #應(yīng)用的函數(shù)
... #額外參數(shù),會被傳遞給fun函數(shù)
)
繼續(xù)使用鳶尾花數(shù)據(jù)集舉例:
lapply(iris[,1:4],mean)
結(jié)果如下:
lapply(iris[,1:4],mean)
$Sepal.Length
[1] 5.843333$Sepal.Width
[1] 3.057333$Petal.Length
[1] 3.758$Petal.Width
[1] 1.199333
可以看到結(jié)果以列表的形式返回,可以使用unlist()函數(shù)將結(jié)果轉(zhuǎn)換為向量。
unlist( #將列表轉(zhuǎn)換為向量 X #R對象 recursive = FALSE #是否對x中的列表進行遞歸轉(zhuǎn)換 use.names = TRUE #是否保留列表中的值名稱 )
unlist(lapply(iris[,1:4],mean))
結(jié)果如下所示:
unlist(lapply(iris[,1:4],mean))
Sepal.Length Sepal.Width Petal.Length Petal.Width
5.843333 3.057333 3.758000 1.199333
三、sapply()函數(shù)
sapply()函數(shù)與lapply()函數(shù)類似,其結(jié)果以矩陣、向量的數(shù)據(jù)類型返回。
定義:向列表,向量、表達式數(shù)據(jù)等應(yīng)用指定函數(shù),然后以向量或矩陣形式返回結(jié)果。
sapply(
X #向量、列表、表達式、數(shù)據(jù)庫
FUN #應(yīng)用的函數(shù)
... #額外參數(shù),會被傳遞給fun函數(shù)
)
同樣使用鳶尾花數(shù)據(jù)集作為例子:
sapply(iris[,1:4], sum)
結(jié)果如下:
sapply(iris[,1:4], sum)
Sepal.Length Sepal.Width Petal.Length Petal.Width
876.5 458.6 563.7 179.9
當fun函數(shù)只有一個返回值,sapply()函數(shù)返回的就是包含這些值的向量。如果fun函數(shù)的結(jié)果時大于1的向量,則sapply()函數(shù)會返回矩陣。
如下例:
x <- sapply(iris[,1:4], function(x) {<!--{C}%3C!%2D%2D%20%2D%2D%3E-->x >3})class(x)結(jié)果如下:
class(x)
[1] "matrix"
數(shù)據(jù)如下圖所示:

四、tapply()函數(shù)
定義:根據(jù)給定的標準,對向量中保存的數(shù)據(jù)進行分組,然后對各分組應(yīng)用指定函數(shù),并返回結(jié)果。
tapply(
X #向量
INDEX #數(shù)據(jù)分組索引
FUN #應(yīng)用的函數(shù)
... #額外參數(shù)
)
舉個例子:
tapply(1:10,rep(1:2,5),sum)
結(jié)果如下圖:
tapply(1:10,rep(1:2,5),sum)
1 2
25 30
例中1:10表示的是數(shù)據(jù)1到10,rep(1:2,5)表示將1到2重復(fù)5次。1,3,5,7,9屬于1分組,2,4,6,8,10屬于2分組。對它們進行求和,得到上訴結(jié)果。
以鳶尾花數(shù)據(jù)集舉例:
tapply(iris$Sepal.Length,iris$Species,sum)
結(jié)果如下所示:
tapply(iris$Sepal.Length,iris$Species,sum)
setosa versicolor virginica
250.3 296.8 329.4
建立一個銷售數(shù)據(jù):
m <- matrix(1:8,ncol = 2,
dimnames = list(c("春","夏","秋","冬"),
c("female","male")))

對該數(shù)據(jù)秋上下半年與性別分別秋銷售之和。
代碼如下:
tapply(m, list(c(1,1,2,2,1,1,2,2),
c(1,1,1,1,2,2,2,2)), sum)
結(jié)果如下所示:
tapply(m, list(c(1,1,2,2,1,1,2,2),
+ c(1,1,1,1,2,2,2,2)), sum)
1 2
1 3 11
2 7 15
這里是將各個數(shù)據(jù)的位置建立索引進行分組,而后進行求和。
五、mapply()函數(shù)
定義:以列表或向量形式給出的參數(shù)傳遞給指定函數(shù),并返回函數(shù)執(zhí)行結(jié)果。
mapply(
FUN #應(yīng)用的函數(shù)
... #待傳遞的參數(shù)
)
繼續(xù)使用鳶尾花數(shù)據(jù)集舉例(哈哈哈):
mapply(sum,iris[,1:4])
結(jié)果如下:
mapply(sum,iris[,1:4])
Sepal.Length Sepal.Width Petal.Length Petal.Width
876.5 458.6 563.7 179.9
總結(jié)
到此這篇關(guān)于R語言apply系列函數(shù)的文章就介紹到這了,更多相關(guān)R語言apply函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
R語言數(shù)值取消科學(xué)計數(shù)法表示的操作
這篇文章主要介紹了R語言數(shù)值取消科學(xué)計數(shù)法表示的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04
R語言數(shù)據(jù)可視化ggplot添加左右y軸繪制天貓雙十一銷售圖
本篇文章主要介紹如何在R中,使用ggplot2包在一個圖像上添加左右兩個 y 軸刻度,并在同一個圖像上繪制兩個完全不一樣的統(tǒng)計圖,有需要的朋友可以借鑒參考下2021-11-11
R語言ggplot2?title設(shè)置教程(main,axis和legend?titles)
ggplot2是一個強大的作圖工具,它可以讓你不受現(xiàn)有圖形類型的限制,創(chuàng)造出任何有助于解決你所遇到問題的圖形,下面這篇文章主要給大家介紹了關(guān)于R語言ggplot2?title設(shè)置(main,axis和legend?titles)的相關(guān)資料,需要的朋友可以參考下2023-02-02
R語言 title()函數(shù)的參數(shù)用法說明
這篇文章主要介紹了R語言 title()函數(shù)的參數(shù)用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04

