2017-08-17 237 views
0

我有這樣R:如何使sapply計算平均值?

> df 
      a   b   c   d 
1 0.15447394 -0.30926550 -0.008613548 -0.7498640 
2 -0.19659661 -0.36732210 0.392225112 -0.1035452 
3 0.29479910 -0.38156592 -0.329859865 -1.5651672 
4 -0.08113478 -1.44865222 -0.812899295 1.5357360 
5 -1.09776659 1.17991490 -1.697510447 -0.7703074 
6 0.57770785 -1.26403177 -2.212101953 -1.5634655 
7 -1.10261224 -0.76119042 -1.025950267 0.8257326 
8 1.30880251 0.39814600 0.533489895 0.4268401 
9 -0.21925337 0.13862706 0.782090900 0.2611366 
10 -0.40633136 -0.01146429 -0.038013060 -0.8353192 

的數據集我現在想沿着行計算平均值,但是當我使用sapply,我得到以下結果

> sapply(df, mean) 
      a   b   c   d 
-0.07679115 -0.28268043 -0.44171425 -0.25382231 

如何強制sapply執行沿行的平均函數?

+0

看看'rowMeans' – Sotos

回答

0

您還可以使用apply

apply(df, 1, mean) 
0

可以轉化爲矩陣,然後使用rowMeans

rowMeans(as.matrix(df)) 
+0

沒有檢查是否'rowMeans()'在工作'data.frames',但我發現該方法無論如何調用'as.matrix()',所以我認爲這是多餘的。 – shians

+0

我知道,但是在寫回答之前我沒有檢查文檔。無論如何,rowMeans()的第一行是「if(is.data.frame(x))x < - as.matrix(x)」,通常在數字操作之前轉換爲矩陣更爲安全。 – shians

+0

當rowMeans的第一行反正調用as.matrix時,它怎麼會比直接調用data.frame的效率低? – shians