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
。这个问题已经被问过很多次了,例如:here、here、here。为了将因子转换为数字,您必须先转换为character
。试试:
as.numeric(as.character(my_vec))
【讨论】:
以上是关于R 中的 as.numeric 有啥问题? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何避免 as.numeric() 中的“警告消息:强制引入的 NA”[重复]
R语言as.numeric函数将因子变量(factor)转化为数值变量(Numeric)
在 R 中使用 as.numeric() 时如何避免数字舍入?
将大型平面文件读入 r as.numeric 的快速方法 [重复]