《R語言實戰(zhàn)》學(xué)習(xí)筆記---Chapter5(5) 高級數(shù)據(jù)管理 apply函數(shù) 將函數(shù)用于矩陣和數(shù)據(jù)框

apply函數(shù)

R函數(shù)很有趣的一個特性,就是它們可以應(yīng)用到一系列的數(shù)據(jù)對象
上。以mean函數(shù)為例子看一下。

> set.seed(1234)
> dt <- runif(20, 1, 20)
> mt <- matrix(dt, nrow = 4, ncol = 5)
> df <- as.data.frame(mt)
> 
> mean(dt)  #作用于向量
[1] 9.966671
> mean(mt)  #作用于矩陣
[1] 9.966671
> mean(dt)  #作用于數(shù)據(jù)框
[1] 9.966671

apply函數(shù)是apply函數(shù)家族的成員之一,可以將R函數(shù)作用到作用到多種數(shù)據(jù)結(jié)構(gòu)的不同維度上。而另外一些成員,lapply() 和sapply() 則可將函數(shù)應(yīng)用到列表(list)上。
apply()函數(shù)的使用格式為:

apply(x, MARGIN, FUN, ...)

其中, x 為數(shù)據(jù)對象, MARGIN 是維度的下標(biāo), FUN 是由你指定的函數(shù), 而...則包括了任何想傳遞給FUN的參數(shù)。 在矩陣數(shù)據(jù)框中, MARGIN=1表示,MARGIN=2表示。

還是以剛才的數(shù)據(jù)為例子,將mean函數(shù)分別作用于數(shù)據(jù)框的行和列維度。

> dt <- runif(20, 1, 20)
> mt <- matrix(dt, nrow = 4, ncol = 5)
> df <- as.data.frame(mt)
> df
         V1        V2       V3        V4       V5
1  3.160365 17.357392 13.65559  6.371938 6.438242
2 12.823689 13.165902 10.77077 18.545236 6.069595
3 12.576220  1.180419 14.17823  6.554001 4.547733
4 12.844209  5.418460 11.35452 16.908617 5.412292

> apply(df, 1, mean)   #作用于數(shù)據(jù)框的行
[1]  9.396706 12.275039  7.807322 10.387620
> apply(df, 2, mean)   #作用于數(shù)據(jù)框的列
       V1        V2        V3        V4        V5 
10.351121  9.280543 12.489780 12.094948  5.616966 
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容