【问题标题】:Formatting Numbers in Flextable for Specific Columns为特定列格式化 Flextable 中的数字
【发布时间】:2019-08-15 18:14:16
【问题描述】:

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

我在 RMarkdown 的弹性表格中格式化我的数字时遇到了困难。默认情况下,所有数字都显示为 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 是一个未使用的参数。

关于如何仅调整 some 列的数量有什么建议吗?提前感谢您的帮助!

【问题讨论】:

    标签: r r-markdown flextable


    【解决方案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(j = c("Sepal.Length", "Sepal.Width",
                                 "Petal.Length", "Petal.Width"), digits = 1)
    ft_test
    

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

    【讨论】:

    • 太完美了!感谢您的帮助。
    • 这个解决方案好像不行了。
    • 我想知道,是否有任何其他解决方案可以根据相同的模式(例如,逗号后面的一个数字)格式化一组列。
    • 我刚刚发现colformat_double 可以代替colformat_num。我会赞成答案,但不允许我更改反对票。
    猜你喜欢
    • 2021-06-19
    • 2011-11-06
    • 1970-01-01
    • 2018-09-02
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 2021-12-22
    • 2019-10-02
    相关资源
    最近更新 更多