首页 > 解决方案 > 在 R 中未正确读取小数

问题描述

我正在尝试获取整数 193525.0768,但它会删除它的小数(?)。请给我解释一下。

df <- tibble(
  x = "193525.0768"
) %>% 
  mutate(x = as.numeric(x))

print(df, digits = 10) # decimals removed. I expect it to maintain the decimals numbers

# A tibble: 1 x 1
        x
    <dbl>
1 193525.

df[1,1][[1]] # decimals removed

# 193525

x <- "193525.0768"
print(as.numeric(x), digits = 10) # decimals not removed
# 193525.0768

标签: rdecimaltibble

解决方案


您有打印问题,而不是阅读问题。tibble 打印方法不接受数字参数 - 详情请参阅?print.tbl。您可以print.data.frame显式使用来绕过 tibble 打印方法并改用 data.frame 打印方法,它确实需要一个digits参数:

tibble(x = "193525.0768") %>% 
  mutate(x = as.numeric(x)) %>% 
  print.data.frame(digits = 10)
#             x
# 1 193525.0768

或者您可以使用选项更改默认值pillar.sigfig(在 中提到?print.tbl)。默认值为 3 - 这令人困惑,因为如果我按字面意思理解,我希望 193525.0768 打印为 194000 ...pillar包中可能有解释推理的文档。

options(pillar.sigfig = 10)

tibble(x = "193525.0768") %>%
  mutate(x = as.numeric(x))
#             x
# 1 193525.0768

或者,使用数据框而不是小标题:

data.frame(x = "193525.0768") %>% 
  mutate(x = as.numeric(x)) %>% 
  print(digits = 10)
#             x
# 1 193525.0768

推荐阅读