2014-09-04 51 views
2

我努力理解爲什麼會這樣:R中的平均值計算不正確?

a<-c(1.1,1.2,1.3) 
b<-c(2.1,2.3,2.6) 
c<-c(1.6,2.3,2.6) 

mean<-rowMeans(matrix(c(a,b,c),ncol=3)) 
mean #### This are the mean values 
[1] 1.600000 1.933333 2.166667 

mean(a[1],b[1],c[1]) #### trying to calculate the mean of 1.1 ,2.1 and 1.6 
[1] 1.1 #### Why is this not 1.6?? 

回答

14

的r參數匹配已經趕上你了:

> mean(9999,2,3,4,5) 
[1] 9999 

help(mean)說:

Usage: 

    mean(x, ...) 

,然後說,它計算的x,平均將...傳遞給其他方法。在我的例子中,9999之後的所有數字都以點點形式捕獲。

R然後調用mean.default,因爲9999只是一個數字,而mean.default對dot-dot-dot參數沒有任何作用,包括錯誤,如果其中有任何內容。

您可以使用此任意沒用的東西添加到您的函數調用:

> mean(c(1,2,3,4), monkeys=TRUE) 
[1] 2.5 
+3

平均猴子... :) – zx8754 2014-09-04 15:22:15

+0

我一直認爲猴子=真,但不知道肯定。現在已經確認。 – 2014-09-15 16:28:36

5

您對meanmean(a[1],b[1],c[1])通話僅第一個元素上進行操作,即mean(a[1])。您需要連接a[1],b[1],c[1]這樣的:

> mean(c(a[1],b[1],c[1])) 
[1] 1.6 
+2

此外,創建一個與函數名稱相同的對象並不是一個好主意。 – nrussell 2014-09-04 15:13:20

+0

謝謝你們。非常感激!! – 2014-09-04 15:14:15

0

Mabye您的問題是,你的矩陣轉置? 試試這個:

mean<-rowMeans(matrix(c(a,b,c),ncol=3, byrow=T))