2013-02-21 40 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 

tôi đã hiểu sai điều gì? không nên là kết quả của as.numeric 8 9 10 6 8?Có gì sai với as.numeric trong R?

Làm cách nào để có kết quả chính xác?

+0

Không có gì sai với as.numeric trong R. Nó làm việc chính xác như nó nên;) –

Trả lời

20

Vectơ của bạn là factor. Câu hỏi này đã được hỏi khá nhiều lần, ví dụ: here, here, here. Để chuyển đổi một yếu tố thành số, bạn sẽ phải chuyển đổi thành character trước tiên. Hãy thử:

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

làm việc, cảm ơn bạn – teGuy

+0

r là ngôn ngữ khủng khiếp –

2

Các tài liệu tại ?factor trạng thái:

Để chuyển đổi một yếu tố f xấp xỉ giá trị số ban đầu của nó, as.numeric(levels(f))[f] được khuyến khích và hơi hiệu quả hơn hơn as.numeric(as.character(f)).

Vì vậy, các công trình sau cũng hoạt động:

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