格式化 Flextable 中特定列的数字

Tam*_*m R 3 r flextable r-markdown

我在 RStudio 中使用 R 版本 3.6.1。我有flextable版本0.5.5和officer版本0.3.5。

我在 RMarkdown 中格式化弹性表中的数字时遇到困难。默认情况下,所有数字均显示为小数点后 3 位。对于我的一些数字,这很好(实际上是首选),但对于其他数字,我想删除小数。

使用此处的建议,我能够调整我的表格,以便所有数字都四舍五入到最接近的整数。我的代码如下(用于再现性的示例表;其他格式与我当前的代码相同)。

ft_test <- head(iris) %>% flextable() %>% 
    hline(part = 'header', border = fp_border(color = "black", width = 3)) %>% 
    align(align ='center', part = 'all') %>% 
    align(j = 1, align ='left', part = 'all') %>% 
    set_formatter_type(fmt_double = "%.0f")
ft_test
Run Code Online (Sandbox Code Playgroud)

但是,我只希望某些列是整数,而其他列仍然有小数。我尝试使用j参数来调用某些列:

ft_test <- head(iris) %>% flextable() %>% 
    hline(part = 'header', border = fp_border(color = "black", width = 3)) %>% 
    align(align ='center', part = 'all') %>% 
    align(j = 1, align ='left', part = 'all') %>% 
    set_formatter_type(fmt_double = "%.0f", j = 2)
ft_test
Run Code Online (Sandbox Code Playgroud)

...但后来我收到一个错误,告诉我j = 2这是一个未使用的参数。

关于如何仅调整某些列的数量有什么建议吗?在此先感谢您的帮助!

Dav*_*hel 5

您不能使用参数,j因为它不是 的参数set_formatter_type。该功能是为一种或多种数据类型设置格式化程序。对于你的情况,最好使用colformat_num.

library(flextable)
library(officer)
library(magrittr)

ft_test <- head(iris) %>% flextable() %>% 
  hline(part = 'header', border = fp_border(color = "black", width = 3)) %>% 
  align(align ='center', part = 'all') %>% 
  align(j = 1, align ='left', part = 'all') %>% 
  colformat_num(j = c("Sepal.Length", "Sepal.Width",
                             "Petal.Length", "Petal.Width"), digits = 1)
ft_test
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

您可以在此处了解有关格式化内容的更多信息:https ://davidgohel.github.io/flextable/articles/display.html

  • 我刚刚发现“colformat_double”可以代替“colformat_num”。我会赞成这个答案,但不允许我改变反对票。 (8认同)