R 中的 as.numeric 有啥问题? [复制]

Posted

技术标签:

【中文标题】R 中的 as.numeric 有啥问题? [复制]【英文标题】:What's wrong with as.numeric in R? [duplicate]R 中的 as.numeric 有什么问题? [复制] 【发布时间】:2013-02-07 10:32:46 【问题描述】:
> 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 没有任何问题。它的工作原理完全符合预期;) 使用 hablar::as_reliable_num 将向量转换为您期望的数字,即 8 9 10 6 8。 【参考方案1】:

?factor 的文档指出:

要将因子f 转换为近似其原始数值, 推荐as.numeric(levels(f))[f],效率略高 比as.numeric(as.character(f)).

所以以下内容也可以:

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

【讨论】:

【参考方案2】:

您的向量是factor。这个问题已经被问过很多次了,例如:hereherehere。为了将因子转换为数字,您必须先转换为character。试试:

as.numeric(as.character(my_vec))

【讨论】:

以上是关于R 中的 as.numeric 有啥问题? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何避免 as.numeric() 中的“警告消息:强制引入的 NA”[重复]

R语言as.numeric函数将因子变量(factor)转化为数值变量(Numeric)

在 R 中使用 as.numeric() 时如何避免数字舍入?

将大型平面文件读入 r as.numeric 的快速方法 [重复]

R:as.numeric函数没有从data.frame返回正确的# [重复]

将因子级别转换为R中的数字