2013-05-15 4 views
4

Как и выше, кто-нибудь знает, что происходит?`mean` не дает правильного ответа

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

Выход:

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

Restarted R и все тот же. Am on R 3.0 x86 Windows.

ответ

7

mean - это функция S3, которая принимает единственный основной аргумент, который представляет собой единственный объект R (чаще всего вектор) величин, а любые другие аргументы передаются другим методам через .... В этом случае они передаются на mean.default, который имеет два дополнительных имени, аргументы, trim и na.rm. Поэтому ваше второе значение будет интерпретироваться как сумма отделки (хотя вы не можете обрезать одно значение).

То, что вы хотите напечатать это:

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

Ах, да, мой боже, такая фундаментальная ошибка. – JackeJR

+1

'mean.default' фактически имеет три именованных аргумента, что означает, что здесь m2 молчаливо интерпретируется как' trim'; теперь это опасно. – baptiste

+0

@ baptiste Хорошая точка, спасибо. Я обновил ответ, чтобы принять это во внимание. – James

 Смежные вопросы

  • Нет связанных вопросов^_^