【问题标题】:Scientific notation wrongly converts to numbers科学记数法错误地转换为数字
【发布时间】:2017-04-01 01:01:23
【问题描述】:

我有一个包含科学计数法数字的数据表,例如1.1e-07
当我尝试使用 as.numeric 将这些数字转换为普通数字时,R 给了我错误的数字,例如:

1.1e-07:   5977  
1.4e-06:   5633  

等等。

我该如何解决这个问题?

更新:谢谢,这确实是关于因素。

【问题讨论】:

  • 输入数据的类型是什么?如果它是因素,那么我会期待你的错误结果。你从哪里得到数据?
  • 几乎可以肯定它们是作为因子导入的。

标签: r scientific-notation


【解决方案1】:

您的数字很可能被定义为因素。这将导致as.numeric 不返回输入的“值”,而是返回因子级别的序列号。

x <- as.factor(c(1.1e-7, 2e-8)) ## convert two numbers to factors

as.numeric(x)
[1] 2 1

要解决此问题,请确保您从数据源中读取数据而不是作为因素。

请注意,快速而肮脏的解决方案类似于

as.numeric(as.character(x))
[1] 1.1e-07 2.0e-08

format(as.numeric(as.character(x)), scientific = F)
[1] "0.00000011" "0.00000002"

顺便说一句,科学记数法在 R 中是标准的。format 将数字转换为字符。

【讨论】:

    猜你喜欢
    • 2021-12-23
    • 1970-01-01
    • 2015-07-03
    • 2019-04-22
    • 2022-10-06
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多