2013-05-15 3 views
4

Comme ci-dessus, quelqu'un sait ce qui se passe?`mean` ne produisant pas la bonne réponse

m1 <- 0.457842055395572 
m2 <- 0.587127416942505 
sum(m1, m2)/2 
mean(m1, m2) 

sortie:

> m1 <- 0.457842055395572 
> m2 <- 0.587127416942505 
> sum(m1, m2)/2 
[1] 0.5224847 
> mean(m1, m2) 
[1] 0.4578421 

Restarted R et toujours le même. Suis sur Windows R 3.0 x86.

Répondre

7

mean est une fonction S3 qui prend un seul argument principal qui est un seul objet R (le plus souvent un vecteur) de quantités, et tous les autres arguments sont passés à d'autres méthodes via .... En cela, ils sont passés sur mean.default qui a deux arguments supplémentaires, trim et na.rm. Par conséquent, votre deuxième valeur sera interprétée comme le montant de l'assiette (bien que vous ne puissiez pas couper une seule valeur).

Qu'est-ce que vous voulez taper est:

mean(c(m1, m2)) 
[1] 0.5224847 
+0

droite Oh, mon Oh mon dieu, une telle erreur fondamentale. – JackeJR

+1

'mean.default' a en réalité trois arguments nommés, ce qui signifie qu'ici m2 a été silencieusement interprété comme' trim'; maintenant _that's_ signifie dangereusement. – baptiste

+0

@baptiste Bon point, merci. J'ai mis à jour la réponse pour en tenir compte. – James

Questions connexes