分類: R

R 基本函數

sapplylapply 函數

在計算變數的平均值、變異數、最小值、最大值與樣本數等數值的時候,我們還是會需要執行類似 mean(Veg$R)sd(Veg$R)min(Veg$R)max(Veg$R)length(Veg$R) 這些指令,但是如果一次要對多個變數計算這些數值的時候(例如計算所有變數的平均值),我們可以使用 sapply 函數:

sapply(Veg[, 5:9], FUN = mean)
        R      ROCK    LITTER        ML 
 9.965517 20.991379 22.853448  1.086207 
 BARESOIL 
17.594828

另外還有一個 lapply 函數,功能跟 sapply 類似,不過輸出的格式有些不同:

lapply(Veg[, 5:9], FUN = mean)

輸出為

$R
[1] 9.965517

$ROCK
[1] 20.99138

$LITTER
[1] 22.85345

$ML
[1] 1.086207

$BARESOIL
[1] 17.59483

lapply 的輸出是一個 list,而 sapply 的輸出則是一個向量,兩者在功能上沒有差別,只是輸出格式不同而已。

tapply 在套用 FUN 函數計算時,會使用區分群組之後的資料來計算,而 lapplysapply 則是使用全部的資料做計算。

lapplysapply 所指定的 X 參數必須要是一個 data frame,如果要處理多個向量變數,可以使用 data.frame 函數建立一個 data frame:

sapply(data.frame(cbind(Veg$R, Veg$ROCK, Veg$LITTER, Veg$ML, Veg$BARESOIL)), FUN = mean)

輸出為

       X1        X2        X3        X4 
 9.965517 20.991379 22.853448  1.086207 
       X5 
17.594828

Exercise 1
temperature.xls 包含了 1990 年到 2005 年荷蘭海岸線上 30 個觀測點的氣溫觀測資料,請計算:

  1. 每一個觀測點(Station)每個月(Month)的氣溫觀測值平均數。(計算結果應為 30 × 12 的表格)
  2. 每一個觀測點每個月的氣溫觀測值標準差以及樣本數。

Page: 1 2 3 4

G. T. Wang

個人使用 Linux 經驗長達十餘年,樂於分享各種自由軟體技術與實作文章。

Share
Published by
G. T. Wang

Recent Posts

[DIY] 自製凡士林火種

這裡介紹如何利用簡單的凡士林與...

2 年 ago

[DIY] 自製火影木葉、砂忍者村標誌雕刻木牌

本篇記錄我用路邊撿來的樟木與龍...

2 年 ago

收集龍眼木修剪枝幹用於木頭工藝

最近打算帶著阿玄做一些木工作品...

2 年 ago

[DIY] 樟木手工自製迷你手裏劍(忍者武器)

本篇記錄阿玄第一次使用木工工具...

2 年 ago

[DIY] 龍眼木手工自製木槌

本篇記錄我用自己砍的龍眼木還有...

2 年 ago

[DIY] 樟木手工自製苦無(忍者武器)

本篇記錄我自己用樟木的枝幹,以...

2 年 ago