Pau*_*aul 4 printf r flextable
上下文:我正在使用 Awesome package 创建 .docx 表flextable。该包具有在最终输出中格式化数字的功能:set_formatter_type()。如果我理解正确的话,这个函数需要一个可以被使用的字符输入sprintf()。我能够使用以下命令实现预期的输出set_formatter(),但需要明确命名每一列,而我无法对真实的表执行此操作。
问题:我无法找到如何使用sprintf()与flextable::set_formatter_type().
可以使用以下命令实现正确的格式设置formatC(),但此功能不适用于flextable::set_formatter_type()
formatC(x = signif(1715235456.5684, 3), big.mark = " ", digits = 0, format = "f")
[1] "1 720 000 000"
Run Code Online (Sandbox Code Playgroud)
使用sprintf()我能够实现:
sprintf("%.0f", signif(1715235456.5684, 3))
[1] "1720000000"
Run Code Online (Sandbox Code Playgroud)
可重现的例子:
df <- flextable::flextable(iris[1:3]*1000)
flextable::set_formatter_type(df, fmt_double = "%.0f") # works fine but I can't get big mark separator
flextable::set_formatter_type(df, fmt_double = function(x) formatC(x, digits = 0, big.mark = " ")) # does not work (error)
flextable::set_formatter(df, Sepal.Length = function(x) formatC(x, digits = 0, big.mark = " ", format = "f")) # works but I would like not to have to name each column from my real life dataframe...
Run Code Online (Sandbox Code Playgroud)
预期输出:
flextable::set_formatter(df,
Sepal.Length = function(x) formatC(x, digits = 0, big.mark = " ", format = "f"),
Sepal.Width = function(x) formatC(x, digits = 0, big.mark = " ", format = "f"),
Petal.Lenght = function(x) formatC(x, digits = 0, big.mark = " ", format = "f"))
Run Code Online (Sandbox Code Playgroud)
感谢@TarJae和@DavidGohel评论,以下是如何使用flextable::colformat_double()此处描述的函数解决问题: https: //github.com/davidgohel/flextable/blob/master/R/formatters.R#L135
最新信息可以在这里找到:https://ardata-fr.github.io/flextable-book/cell-content-1.html#simple-formatting-of-cell-content
df <- flextable::flextable(iris[1:3]*1000)
flextable::colformat_double(df, big.mark = " ", digits = 0)
Run Code Online (Sandbox Code Playgroud)
输出:
| 归档时间: |
|
| 查看次数: |
1534 次 |
| 最近记录: |