Why does as_tibble() round floats to the nearest integer?

让人想犯罪 __ 提交于 2019-11-28 03:27:16

问题


When using as_tibble in dplyr 0.7.4 and R 3.4.1 I get the following outputs

mtcars %>% aggregate(disp ~ cyl, data=., mean) %>% as_tibble()

which outputs

# A tibble: 3 x 2
    cyl  disp
  <dbl> <dbl>
1  4.00   105
2  6.00   183
3  8.00   353

while

mtcars %>% aggregate(disp ~ cyl, data=., mean)

outputs

  cyl     disp
1   4 105.1364
2   6 183.3143
3   8 353.1000

Not really surprisingly, the following

mtcars %>% group_by(cyl) %>% summarise(disp=mean(disp))

gives again

# A tibble: 3 x 2
    cyl  disp
  <dbl> <dbl>
1  4.00   105
2  6.00   183
3  8.00   353

Why is this rounding happening and how can I avoid it?


回答1:


This is not a rounding, it's only a way for {tibble} to display data in a pretty way:

> mtcars %>% 
+   aggregate(disp ~ cyl, data=., mean) %>% 
+   as_tibble() %>% 
+   pull(disp)
[1] 105.1364 183.3143 353.1000

If you want to see more digits, you have to print a data.frame:

> mtcars %>% 
+   aggregate(disp ~ cyl, data=., mean) %>% 
+   as_tibble() %>% 
+   as.data.frame()
  cyl     disp
1   4 105.1364
2   6 183.3143
3   8 353.1000

(and yes, the two last lines are useless)



来源:https://stackoverflow.com/questions/48668064/why-does-as-tibble-round-floats-to-the-nearest-integer

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!