【问题标题】:How to format all numbers in a table in r using kable?如何使用kable格式化r表中的所有数字?
【发布时间】:2019-08-01 06:06:56
【问题描述】:

我需要能够减少或简化此表中的数字。我只希望显示最多 4 个小数位,如果可能的话,如果数字是整数,则只显示整数。我将如何做到这一点?

library(kableExtra)
x = c(1, 1, 1, 1, 1, 1, 1, 1, 1)
y = x/2
z = x/3
a = data.frame(x, y, z)
b = t(a)
c = kable(b, "html", align = "c") %>%
  kable_styling(full_width = F)

【问题讨论】:

  • @eipi10 - digits 参数本身不足以打印没有小数的x。

标签: r r-markdown kable kableextra


【解决方案1】:

使用format() 函数将数据转换为呈现数据所需的最小小数位数。使用原始帖子中的代码:

library(knitr)
library(kableExtra)
x = c(1, 1, 1, 1, 1, 1, 1, 1, 1)
y = x/2
z = x/3

a = data.frame(x = format(x,digits=4,nsmall = 0), 
               y = format(y,digits=4,nsmall = 0), 
               z = format(z,digits = 4,nsmall = 0))
b = t(a)
c = kable(b, "html", align = "c") %>%
  kable_styling(full_width = F)

...和输出:

结合 Martin Schmelzer 的 cmets,相同解决方案的 tidyverse 版本如下所示。

# tidyverse alternative
library(knitr)
library(kableExtra)
library(dplyr)
x = c(1, 1, 1, 1, 1, 1, 1, 1, 1)
y = x/2
z = x/3
data.frame(x,y,z) %>% 
   mutate_if(is.numeric, format, digits=4,nsmall = 0) %>% t(.) %>% kable(.,"html",align = "c") %>% 
   kable_styling(full_width = F) -> c

【讨论】:

  • df %>% mutate_if(is.numeric, format, digits=4) %>% kable 让生活更轻松。
  • @MartinSchmelzer - 您的代码在管道中缺少 nsmall 参数和 t(.) 函数,但我合并了这些项目并将 tidyverse 版本添加到答案中。感谢您的反馈!
  • 很清楚缺少什么。由于我只发表评论而没有任何输出,因此我认为没有必要这样做,因为重点是条件突变。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 2023-03-15
  • 2016-01-27
相关资源
最近更新 更多