2017-08-17 300 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