R語言apply系列函數實例詳解_第1頁
R語言apply系列函數實例詳解_第2頁
R語言apply系列函數實例詳解_第3頁
R語言apply系列函數實例詳解_第4頁
R語言apply系列函數實例詳解_第5頁
已閱讀5頁,還剩3頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

前言

在R語言中,apply系列函數可以對向量、矩陣、數據框一次性對整體數據應用函數運算,非常方便

一、apply()函數

定義:apply()函數按矩陣的行或列方向應用指定函數。

apply(

x#數組或矩陣

MARGIN#應用函數的方向,1行2列

FUN#應用的函數

#返回值根據數據Data的數據類型與Fun的返回值自動判斷返回的數據類型

這里舉個例子:

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

apply(s,1,sum)

apply(s,2,sum)

即可得到下列結果:

apply(s,1,sum)

[1]121518

apply(s,2,sum)

[1]61524

在舉一個R語言自帶的鳶尾花數據集例子:

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

結果如下:

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

Sepal.LengthSepal.WidthPetal.LengthPetal.Width

876.5458.6563.7179.9

如果小伙伴們對鳶尾花數據集不了解可以輸入iris查看。

于此同時R語言中還定義了rowSums(),rowMeans(),colSums(),colMeans()函數對行列進行求和、均值的函數。使用方式也很簡單。

二、lapply()函數

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

lapply(

X#向量、列表、表達式、數據庫

FUN#應用的函數

...#額外參數,會被傳遞給fun函數

)

繼續使用鳶尾花數據集舉例:

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

結果如下:

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

可以看到結果以列表的形式返回,可以使用unlist()函數將結果轉換為向量。

unlist(

#將列表轉換為向量

X#R對象

recursive=FALSE#是否對x中的列表進行遞歸轉換

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

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

結果如下所示:

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

Sepal.LengthSepal.WidthPetal.LengthPetal.Width

5.8433333.0573333.7580001.199333

三、sapply()函數

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

定義:向列表,向量、表達式數據等應用指定函數,然后以向量或矩陣形式返回結果。

sapply(

X#向量、列表、表達式、數據庫

FUN#應用的函數

...#額外參數,會被傳遞給fun函數

)

同樣使用鳶尾花數據集作為例子:

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

結果如下:

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

Sepal.LengthSepal.WidthPetal.LengthPetal.Width

876.5458.6563.7179.9

當fun函數只有一個返回值,sapply()函數返回的就是包含這些值的向量。如果fun函數的結果時大于1的向量,則sapply()函數會返回矩陣。

如下例:

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

結果如下:

class(x)

[1]matrix

數據如下圖所示:

四、tapply()函數

定義:根據給定的標準,對向量中保存的數據進行分組,然后對各分組應用指定函數,并返回結果。

tapply(

X#向量

INDEX#數據分組索引

FUN#應用的函數

...#額外參數

)

舉個例子:

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

結果如下圖:

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

12

2530

例中1:10表示的是數據1到10,rep(1:2,5)表示將1到2重復5次。1,3,5,7,9屬于1分組,2,4,6,8,10屬于2分組。對它們進行求和,得到上訴結果。

以鳶尾花數據集舉例:

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

結果如下所示:

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

setosaversicolorvirginica

250.3296.8329.4

建立一個銷售數據:

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

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

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

對該數據秋上下半年與性別分別秋銷售之和。

代碼如下:

tapply(m,list(c(1,1,2,2,1,1,2,2),

c(1,1,1,1,2,2,2,2)),sum)

結果如下所示:

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

這里是將各個數據的位置建立索引進行分組,而后進行求和。

五、mapply()函數

定義:以列表或向量形式給出的參數傳遞給指定函數,并返回函數執行結果。

mapply(

FUN#應用的函數

...#待傳遞的參數

)

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

mapp

溫馨提示

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

評論

0/150

提交評論