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. 每一個觀測點每個月的氣溫觀測值標準差以及樣本數。