2013-02-21 10 views
7
> X864291X8X74 
[1] 8.0000000000 9.0000000000 10.0000000000 6.0000000000 8.0000000000 
10 Levels: 0.0000000000 10.0000000000 12.0000000000 3.0000000000 4.0000000000 6.0000000000 ... NULL 

> as.numeric(X864291X8X74) 

[1] 8 9 2 6 8 

私は間違っていましたか? as.numericの結果であってはなりません8 9 10 6 8?Rのas.numericの何が問題なのですか?

正しい結果を得るにはどうすればよいですか?

+0

Rのas.numericに問題はありません。それは正確に動作するはずです; –

答えて

20

あなたのベクトルはfactorです。この質問は、かなり数回、例えばhere,here,hereとされています。係数を数値に変換するには、最初にcharacterに変換する必要があります。 as.numeric(levels(f))[f]が推奨され、

は約元の数値に係数fを変換すると、わずかに、より効率的 as.numeric(as.character(f)).より

?factor状態で

as.numeric(as.character(my_vec)) 
+0

、ありがとうございました – teGuy

+0

rは恐ろしい言語です –

2

ドキュメントを:試してみてくださいしたがって、次のようにも動作します:

as.numeric(levels(my_vec))[my_vec]