Jac*_*ski 5 r flextable officer
例如我正在使用虹膜数据:
library(flextable)
library(officer)
library(magrittr)
ft_test <- head(iris) %>% flextable() %>%
colformat_num(j = c("Sepal.Length", "Sepal.Width",
"Petal.Length", "Petal.Width"), digits = 1)
Run Code Online (Sandbox Code Playgroud)
如果我希望有百分比格式的“Petal.Width”值,正确的语法是什么?我找不到 colformat_percent 函数。有没有办法使用flextable语法来弥补它?
Sir*_*ius 10
set_formatter按照手册中所述使用虹膜数据(!)
ft_test <- head(iris) %>% flextable() %>%
set_formatter( Petal.Width = function(x) sprintf( "%.1f%%", x*100 ) )
Run Code Online (Sandbox Code Playgroud)
这是手册中的示例部分:
Examples:
ft <- flextable( head( iris ) )
ft <- set_formatter( x = ft,
Sepal.Length = function(x) sprintf("%.02f", x),
Sepal.Width = function(x) sprintf("%.04f", x)
)
ft <- theme_vanilla( ft )
ft
Run Code Online (Sandbox Code Playgroud)
似乎有一个官方函数fmt_pct。
ft_test <- head(iris) %>% flextable() %>% mk_par(
j = "Sepal.Length",
value = as_paragraph(as_chunk(Sepal.Length, formatter = fmt_pct)))
Run Code Online (Sandbox Code Playgroud)
或者,您可以在将单元格转换为弹性表之前将其格式化为字符:
percent <- function(x, digits = 2, format = "f", ...) {
paste0(formatC(x * 100, format = format, digits = digits, ...), "%")
}
ft_test <- head(iris) %>%
mutate(across(where(is.numeric), ~percent(.x))) %>%
flextable()
Run Code Online (Sandbox Code Playgroud)