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函数将因子变量(factor)转化为数值变量(Numeric)
将向量从二进制强制转换为“as.numeric”时保留名称?
如何避免 as.numeric() 中的“警告消息:强制引入的 NA”[重复]