什么';R中的as.numeric有什么问题?

什么';R中的as.numeric有什么问题?,r,R,我搞错了什么?不应该是as.numeric 8 9 10 6 8的结果吗 如何得到正确的结果?您的向量是一个因子。这个问题已经被问了好几次了,例如:。为了将因子转换为数值,您必须首先转换为字符。尝试: > X864291X8X74 [1] 8.0000000000 9.0000000000 10.0000000000 6.0000000000 8.0000000000 10 Levels: 0.0000000000 10.0000000000 12.0000000000 3.000

我搞错了什么?不应该是as.numeric 8 9 10 6 8的结果吗


如何得到正确的结果?

您的向量是一个
因子。这个问题已经被问了好几次了,例如:。为了将因子转换为数值,您必须首先转换为
字符
。尝试:

> 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

?factor
中的文档说明:

要将系数
f
转换为近似其原始数值,
as.numeric(levels(f))[f]
是推荐的,效率略高一些 而不是
as.numeric(as.character(f))。

因此,以下方法也适用:

as.numeric(as.character(my_vec))

R中的as.numeric没有什么问题。它完全按照它应该的方式工作;)使用
hablar::as_reliable_num
将向量转换为您期望的数字,即8 9 10 6 8。
as.numeric(levels(my_vec))[my_vec]