2014-12-10 1 views
2

У меня есть список числовых (не-NA) данных, которые я могу правильно вернуть, sd, но не mean. Я могу рассчитать среднее значение для себя, но mean(data) возвращает NA. Если это имеет значение, то, как я его расчета является сортировка данных, а затем взятие 7 по величине, как показано:Почему значение дает NA?

tQs = sort(dat[ist,7:16]); 
tQs = tQs[4:10]; 
print(tQs); 
cat(sprintf("sum : %.2f\n", sum(tQs))); 
cat(sprintf("avg : %.2f\n", sum(tQs)/length(tQs))); 
cat(sprintf("mean: %.2f\n", mean(tQs))); 
cat(sprintf("std : %.2f\n", sd(tQs))); 

Вот результат:

Quiz4 Quiz2 Quiz1 Quiz3 Quiz5 Quiz7 Quiz10 
27 60 80 100 100 100 100 100 
sum : 640.00 
avg : 91.43 
mean: NA 
std : 15.74 

Любая идея, почему mean не за работой?

EDIT: Включение warnings() в конце говорит: argument is not numeric or logical: returning NA

+0

Как насчет использования 'mean (tQs, na.rm = T)'? –

+0

Что такое 'class (tQs)'? – MrFlick

+0

В нем говорится, что это 'data.frame' – drjrm3

ответ

3

Mean не работает на data.frames. Он работает только на векторах и матрицах.

Если вы пытаетесь

mean(as.matrix(tQs)) 

он должен работать - при условии, что нет никаких проблем с основными данными.

+1

Это правда, но реальная неожиданность заключается в том, что 'sd' также не потерпел неудачу. –

+0

@BondedDust Хорошая точка - я не думал проверять это. –

+0

Спасибо, как мне превратить объект 'data.frames' в вектор? – drjrm3