2013-12-09 144 views
0

所以我有這樣的載體:平均函數

x 
[1] 76 89 78 50 84 56 29 53 32 68 
112 Levels: 0 1 10 100 101 102 103 104 105 106 107 108 109 11 110 12 13 ... eta 

爲什麼出現這種情況?

[1] NA 
Warning message: 
In mean.default(x) : l'argomento non è numerico o logico: restituisco NA 
+1

嘗試翻譯錯誤消息:「該參數既不是數字也不是邏輯,用N/A替換」。 – Floris

+1

您可以使用[this]將語言設置爲英語(http://stackoverflow.com/questions/13575180/how-to-change-the-language-of-errors-in-r) – agstudy

回答

6

看起來像x是一個因素。將因素轉換爲數字時有一個問題。您需要使用:

mean(as.numeric(as.character(x)), na.rm=TRUE) 

如果不轉換爲字符首先,你將得到根本因素代碼。

+0

Holy ####確實是一個難題!太棒了! – user3083324

0

貌似x是分類變量 - 嘗試

mean(as.numeric(as.character(x))) 

(根據詹姆斯指出,如果沒有as.character,你得到的因素代碼:

x <- as.factor(10:20) 
as.numeric(x) 
[1] 1 2 3 4 5 6 7 8 9 10 11 

自從離開了na.rm=TRUE ,雖然更安全,但不會導致問題)

+1

謝謝!我如何知道我是在處理分類變量還是數值變量? – user3083324

+1

是什麼給了它的印刷'x'給你的水平。 'R'通常會將「數字」的東西解析爲數值變量,但我猜測這個矢量被切分了一些以消除其中的一些。如果你檢查原始矢量,我敢打賭,你會發現一些不是「數字」的東西。 – colcarroll

+0

使用'str(your_object)'來查看存儲的模式。 –

0

除了更改爲數值之外,當使用mean函數時,請確保指定na.rm=TRUE以防在向量中有NA值。否則,它會顯示您看到的警告。