as.numeric() 删除 R 中的小数位,如何更改?

Posted

技术标签:

【中文标题】as.numeric() 删除 R 中的小数位,如何更改?【英文标题】:as.numeric() removes decimal places in R, how to change? 【发布时间】:2015-04-26 16:21:32 【问题描述】:

我希望是一个关于 as.numeric() 的简单问题。我有一堆数据,其中数字写成字符。我希望它们是数字,但 as.numeric() 带走了小数点。例如:

y <- as.character("0.912345678")
as.numeric(y)
0.9123457

谢谢你:)

【问题讨论】:

选项(位数 = 9) 我确定这是重复的,但我现在懒得找到合适的问题来链接它。 @Dason 可能是这个here 或here?我不确定答案是否足够相似,所以我没有标记问题。 【参考方案1】:

R 基本上遵循一些用于打印所需位数的基本配置设置。您可以使用digits 选项进行更改,如下所示:

> options(digits=9)
> y <- as.character("0.912345678")
> as.numeric(y)
[1] 0.912345678

EDIT为清楚起见: digits 对应总共显示的位数,而不仅仅是逗号后面的位数。

例如,

> options(digits=9)
> y <- as.character("10.123456789")
> as.numeric(y)
[1] 10.1234568

在上面的示例中,逗号之前的前导零不计入数,这就是为什么 9 位足以显示完整数字的原因。

【讨论】:

【参考方案2】:

实际情况是 R 仅显示固定位数。

这个R-help 帖子解释了正在发生的事情。引用彼得·达尔加德的话:

“对象和对象的显示是有区别的。”

以你的例子,

y2 = as.numeric(y)
print(y2)
# [1] 0.9123457 

但减去 0.9 才能看到

y2 - 0.9
# [1] 0.01234568

更新基于@Khashaa 的评论 要更改您的显示使用

options(digits = 9)
y2
# [1] 0.912345678

【讨论】:

以上是关于as.numeric() 删除 R 中的小数位,如何更改?的主要内容,如果未能解决你的问题,请参考以下文章

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

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

将向量从二进制强制转换为“as.numeric”时保留名称?

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

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

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