R語(yǔ)言apply系列函數(shù)實(shí)例詳解_第1頁(yè)
R語(yǔ)言apply系列函數(shù)實(shí)例詳解_第2頁(yè)
R語(yǔ)言apply系列函數(shù)實(shí)例詳解_第3頁(yè)
R語(yǔ)言apply系列函數(shù)實(shí)例詳解_第4頁(yè)
R語(yǔ)言apply系列函數(shù)實(shí)例詳解_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第R語(yǔ)言apply系列函數(shù)實(shí)例詳解目錄前言一、apply()函數(shù)二、lapply()函數(shù)三、sapply()函數(shù)四、tapply()函數(shù)五、mapply()函數(shù)總結(jié)

前言

在R語(yǔ)言中,apply系列函數(shù)可以對(duì)向量、矩陣、數(shù)據(jù)框一次性對(duì)整體數(shù)據(jù)應(yīng)用函數(shù)運(yùn)算,非常方便

一、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的返回值自動(dòng)判斷返回的數(shù)據(jù)類型

這里舉個(gè)例子:

s-matrix(1:9,ncol=3)

apply(s,1,sum)

apply(s,2,sum)

即可得到下列結(jié)果:

apply(s,1,sum)

[1]121518

apply(s,2,sum)

[1]61524

在舉一個(gè)R語(yǔ)言自帶的鳶尾花數(shù)據(jù)集例子:

apply(iris[,1:4],2,sum)

結(jié)果如下:

apply(iris[,1:4],2,sum)

Sepal.LengthSepal.WidthPetal.LengthPetal.Width

876.5458.6563.7179.9

如果小伙伴們對(duì)鳶尾花數(shù)據(jù)集不了解可以輸入iris查看。

于此同時(shí)R語(yǔ)言中還定義了rowSums(),rowMeans(),colSums(),colMeans()函數(shù)對(duì)行列進(jìn)行求和、均值的函數(shù)。使用方式也很簡(jiǎn)單。

二、lapply()函數(shù)

定義:lapply()函數(shù)以列表的形式返回函數(shù)的結(jié)果

lapply(

X#向量、列表、表達(dá)式、數(shù)據(jù)庫(kù)

FUN#應(yīng)用的函數(shù)

...#額外參數(shù),會(huì)被傳遞給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對(duì)象

recursive=FALSE#是否對(duì)x中的列表進(jìn)行遞歸轉(zhuǎn)換

s=TRUE#是否保留列表中的值名稱

unlist(lapply(iris[,1:4],mean))

結(jié)果如下所示:

unlist(lapply(iris[,1:4],mean))

Sepal.LengthSepal.WidthPetal.LengthPetal.Width

5.8433333.0573333.7580001.199333

三、sapply()函數(shù)

sapply()函數(shù)與lapply()函數(shù)類似,其結(jié)果以矩陣、向量的數(shù)據(jù)類型返回。

定義:向列表,向量、表達(dá)式數(shù)據(jù)等應(yīng)用指定函數(shù),然后以向量或矩陣形式返回結(jié)果。

sapply(

X#向量、列表、表達(dá)式、數(shù)據(jù)庫(kù)

FUN#應(yīng)用的函數(shù)

...#額外參數(shù),會(huì)被傳遞給fun函數(shù)

)

同樣使用鳶尾花數(shù)據(jù)集作為例子:

sapply(iris[,1:4],sum)

結(jié)果如下:

sapply(iris[,1:4],sum)

Sepal.LengthSepal.WidthPetal.LengthPetal.Width

876.5458.6563.7179.9

當(dāng)fun函數(shù)只有一個(gè)返回值,sapply()函數(shù)返回的就是包含這些值的向量。如果fun函數(shù)的結(jié)果時(shí)大于1的向量,則sapply()函數(shù)會(huì)返回矩陣。

如下例:

x-sapply(iris[,1:4],function(x){!--{C}%3C!%2D%2D%20%2D%2D%3E--x3})class(x)

結(jié)果如下:

class(x)

[1]matrix

數(shù)據(jù)如下圖所示:

四、tapply()函數(shù)

定義:根據(jù)給定的標(biāo)準(zhǔn),對(duì)向量中保存的數(shù)據(jù)進(jìn)行分組,然后對(duì)各分組應(yīng)用指定函數(shù),并返回結(jié)果。

tapply(

X#向量

INDEX#數(shù)據(jù)分組索引

FUN#應(yīng)用的函數(shù)

...#額外參數(shù)

)

舉個(gè)例子:

tapply(1:10,rep(1:2,5),sum)

結(jié)果如下圖:

tapply(1:10,rep(1:2,5),sum)

12

2530

例中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分組。對(duì)它們進(jìn)行求和,得到上訴結(jié)果。

以鳶尾花數(shù)據(jù)集舉例:

tapply(iris$Sepal.Length,iris$Species,sum)

結(jié)果如下所示:

tapply(iris$Sepal.Length,iris$Species,sum)

setosaversicolorvirginica

250.3296.8329.4

建立一個(gè)銷售數(shù)據(jù):

m-matrix(1:8,ncol=2,

dimnames=list(c("春","夏","秋","冬"),

c("female","male")))

對(duì)該數(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)

12

1311

2715

這里是將各個(gè)數(shù)據(jù)的位置建立索引進(jìn)行分組,而后進(jìn)行求和。

五、mapply()函數(shù)

定義:以列表或向量形式給出的參數(shù)傳遞給指定函數(shù),并返回函數(shù)執(zhí)行結(jié)果。

mapply(

FUN#應(yīng)用的函數(shù)

...#待傳遞的參數(shù)

)

繼續(xù)使用鳶尾花數(shù)據(jù)集舉例(哈哈哈):

mapp

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論