【问题标题】:Parsing double grouped number with readr::parse_double()使用 readr::parse_double() 解析双组数
【发布时间】:2023-03-11 21:10:02
【问题描述】:

代码显示为:

readr::parse_double("123,456,789.987", 
                    locale = locale(decimal_mark = ".", 
                                    grouping_mark = ","))

预期结果为:123456789.987
但事实证明这会引发错误:

1 parsing failure.
row # A tibble: 1 x 4 col     row   col               expected       actual 
expected   <int> <int>                  <chr>        <chr> actual 1     1    
NA no trailing characters ,456,789.987
[1] NA
attr(,"problems")

我想知道为什么会发生这种情况以及如何解决?

【问题讨论】:

    标签: r tidyverse readr


    【解决方案1】:

    我不确定,但看起来你需要parse_number:来自?parse_number

    区域设置指定的分组标记在数字内被忽略。

    parse_double() 的帮助页面没有说它没有忽略分组标记,但它没有说它确实...

    print(parse_number("123,456,789.987"),digits=20)
    ## [1] 123456789.98700000346
    

    (出现末尾多余的数字是因为这个数字不能用双精度浮点精确表示)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多