sapply 與 lapply 函數
在計算變數的平均值、變異數、最小值、最大值與樣本數等數值的時候,我們還是會需要執行類似 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 函數計算時,會使用區分群組之後的資料來計算,而 lapply 與 sapply 則是使用全部的資料做計算。lapply 與 sapply 所指定的 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 個觀測點的氣溫觀測資料,請計算:
- 每一個觀測點(
Station)每個月(Month)的氣溫觀測值平均數。(計算結果應為 30 × 12 的表格) - 每一個觀測點每個月的氣溫觀測值標準差以及樣本數。