当前位置:  开发笔记 > 开发工具 > 正文

在打印时舍入dplyr tbl_df中的数值

如何解决《在打印时舍入dplyrtbl_df中的数值》经验,为你挑选了2个好方法。



1> Pierre Lapoi..:

使用print.data.frame而不是print在调整数字之后option.

options(digits = 3)
print.data.frame(my_tbl)

    Species Sepal.Length Sepal.Width Petal.Length Petal.Width
     setosa     3.09e+26    2.12e+26     9.02e+25    1.52e+25
 versicolor     3.66e+26    1.71e+26     2.63e+26    8.18e+25
  virginica     4.07e+26    1.84e+26     3.43e+26    1.25e+26


您也可以执行`print.data.frame(my_tbl,digits = 3)`而无需更改任何选项.

2> Rich Scriven..:

您可以重写dplyr:::print.tbl_df以包含signif参数.

print.tbl_df <- function (x, ..., signif = 3, n = NULL, width = NULL) 
{
    nums <- vapply(x, is.numeric, NA)
    x[nums] <- lapply(x[nums], signif, digits = signif)
    cat("Source: local data frame ", dim_desc(x), "\n", sep = "")
    cat("\n")
    print(trunc_mat(x, n = n, width = width))
    invisible(x)
}

my_tbl <- iris %>% group_by(Species) %>% summarise_each(funs((sum(.*12345e20))))

现在任何tbl_df打印的默认有效数字为3.

my_tbl
# Source: local data frame [3 x 5]
#
#      Species Sepal.Length Sepal.Width Petal.Length Petal.Width
#       (fctr)        (dbl)       (dbl)        (dbl)       (dbl)
# 1     setosa     3.09e+26    2.12e+26     9.02e+25    1.52e+25
# 2 versicolor     3.66e+26    1.71e+26     2.63e+26    8.18e+25
# 3  virginica     4.07e+26    1.84e+26     3.43e+26    1.25e+26

要使用其他有效数字打印,我们可以使用print().

print(my_tbl, signif = 5)
# Source: local data frame [3 x 5]
#
#      Species Sepal.Length Sepal.Width Petal.Length Petal.Width
#       (fctr)        (dbl)       (dbl)        (dbl)       (dbl)
# 1     setosa   3.0900e+26  2.1159e+26   9.0242e+25  1.5184e+25
# 2 versicolor   3.6640e+26  1.7098e+26   2.6295e+26  8.1847e+25
# 3  virginica   4.0664e+26  1.8357e+26   3.4270e+26  1.2505e+26

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有