99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
2018-12-05 閱讀量: 1077
R循環(huán)語句4--apply, lapply, sapply

R語言中的循環(huán)函數(shù)(Grouping Function)

可以按組對數(shù)據(jù)進行處理,apply, lapply, sapply, tapply, mapply,等。這幾個函數(shù)功能有些類似,下面介紹下這幾個函數(shù)的用法。

Apply

這是對一個Matrix或者Array進行某個維度的運算。其格式是:

Apply(數(shù)據(jù),維度Index,運算函數(shù),函數(shù)的參數(shù))

對于Matrix來說,其維度值為2,第二個參數(shù)維度Index中,1表示按行運算,2表示按列運算。下面舉一個例子:

m<-matrix(1:6,2,3)

構建一個簡單的2行3列的矩陣,內(nèi)容為:

[,1] [,2] [,3]

[1,] 1 3 5

[2,] 2 4 6

如果我們要計算每一行的sum值,那么我們可以寫為:apply(m,1,sum)[1] 9 12如果要計算每一列的mean值,那么改為:apply(m,2,mean)[1] 1.5 3.5 5.5假如某個值為NA,那么要忽略NA值,進行每一行的SUM怎么辦呢?m[2,2]<-NA [,1] [,2] [,3]

[1,] 1 3 5

[2,] 2 NA 6

apply(m,1,sum)

[1] 9 NA 本身sum函數(shù)有一個參數(shù)na.rm,我們可以將這個參數(shù)帶人到apply函數(shù)中,作為第4個參數(shù):apply(m,1,sum,na.rm=TRUE)

[1] 9 8 需要注意的是如果是Data Frame,那么系統(tǒng)會將其轉為Matrix,如果所有Column不是數(shù)字類型或者類型不一致,導致轉換失敗,那么apply是運算不出任何一列的結果的。Lapply

前面說到apply是對于matrix和array的,針對list,我們可以使用lapply函數(shù)。該函數(shù)接收list,返回的結果也是一個list。其調(diào)用如下:Apply(數(shù)據(jù),運算函數(shù),函數(shù)的參數(shù))對于Data Frame來說,如果不同的列有不同的數(shù)據(jù)類型,不能轉換成Matrix,但是卻可以轉換成List,然后使用lapply函數(shù)。我們建立一個學生名字,年齡和成績的Data Frame,然后統(tǒng)計平均年齡和平均成績,由于name列不是數(shù)值類型,所以無法算平均值,所以我們可以對非數(shù)值的數(shù)據(jù)只取count數(shù)量。這里就需要用到自定義函數(shù)。函數(shù)可以是匿名函數(shù),也可以是之前定義好的函數(shù),由于這里邏輯簡單,我們可以用匿名函數(shù)解決。s<-data.frame(name=c("Devin","Edward","Lulu"),age=c(30,33,29),score=c(95,99,90))

name age score

1 Devin 30 95

2 Edward 33 99

3 Lulu 29 90

lapply(s,function(x){if(is.numeric(x)){mean(x)}else{length(x)}})

$name

[1] 3

$age

[1] 30.66667

$score

[1] 94.66667我們可以看到返回了一個List的結果,里面包含3個項,每個項是函數(shù)執(zhí)行的結果。lapply返回的結果和傳入的List的結構相同,傳入多少個Item,返回的也是多少個Item。Sapply

Sapply函數(shù)和Lapply函數(shù)很類似,也是對List進行處理,只是在返回結果上,Sapply會根據(jù)結果的數(shù)據(jù)類型和結構,重新構建一個合理的數(shù)據(jù)類型返回。調(diào)用格式如下:Apply(數(shù)據(jù),運算函數(shù),函數(shù)的參數(shù),simplify = TRUE, USE.NAMES = TRUE)對于其中的simplify參數(shù),就是指明是否對返回的結果集重新組織,如果為FALSE,那么就相當于lapply了。{if(is.numeric(x)){mean(x)}else{length(x)}})

name age score

3.00000 30.66667 94.66667

0.0000
3
關注作者
收藏
評論(0)

發(fā)表評論

暫無數(shù)據(jù)
推薦帖子