弹性格式化特定列中的数字

时间:2019-08-15 18:14:16

标签: r r-markdown flextable

我正在RStudio中使用R版本3.6.1。我有弹性版本0.5.5和官员版本0.3.5。

我很难在RMarkdown的flextables中格式化我的数字。默认情况下,所有数字都显示3个小数位。对于我的某些数字,这很好(实际上是首选),但对于其他数字,我想删除小数点。

使用找到的建议here,我可以调整表格,以便将所有数字四舍五入到最接近的整数。我的代码如下(用于再现性的示例表;否则格式与我当前的代码相同)。

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

但是,我只希望某些列为整数,而其他列仍为小数。我尝试使用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

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

关于如何调整仅一些列的数量的任何建议?预先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您不能使用参数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(col_keys = c("Sepal.Length", "Sepal.Width",
                             "Petal.Length", "Petal.Width"), digits = 1)
ft_test

enter image description here

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