为什么as_tibble()round浮动到最接近的整数?

mic*_*kkk 8 r dplyr tibble

在dplyr 0.7.4和R 3.4.1中使用as_tibble时,我得到以下输出

mtcars %>% aggregate(disp ~ cyl, data=., mean) %>% as_tibble()
Run Code Online (Sandbox Code Playgroud)

哪个输出

# A tibble: 3 x 2
    cyl  disp
  <dbl> <dbl>
1  4.00   105
2  6.00   183
3  8.00   353
Run Code Online (Sandbox Code Playgroud)

mtcars %>% aggregate(disp ~ cyl, data=., mean)
Run Code Online (Sandbox Code Playgroud)

输出

  cyl     disp
1   4 105.1364
2   6 183.3143
3   8 353.1000
Run Code Online (Sandbox Code Playgroud)

以下并不奇怪

mtcars %>% group_by(cyl) %>% summarise(disp=mean(disp))
Run Code Online (Sandbox Code Playgroud)

又给了

# A tibble: 3 x 2
    cyl  disp
  <dbl> <dbl>
1  4.00   105
2  6.00   183
3  8.00   353
Run Code Online (Sandbox Code Playgroud)

为什么这种四舍五入发生了,我该如何避免呢?

abi*_*hat 14

这不是一个舍入,它只是{tibble}以一种漂亮的方式显示数据的一种方式:

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

如果要查看更多数字,则必须打印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
Run Code Online (Sandbox Code Playgroud)

(是的,最后两行没用)