我有一个简单的数据框,我试图导出到word文档。我在工作 与ReporteRs。我希望所有数字都在单元格的中心(在正文和标题中)。
a <- 1:5
b <- 1:5
df <- data.frame(a,b)
根据文档“使用ft_object []&lt; - value对FlexTable的整个部分(正文,页眉或页脚)执行操作。”
所以我试试
df_Flex <- FlexTable(df)
setFlexTableWidths(df_Flex, rep(0.5,2))
df_Flex[] <- parProperties(text.align = 'center')
然而,结果是一张只有身体中的数字的表格 中心。标题不是。如果我想要标题和正文都在中心,我必须写两行代码
df_Flex[] <- parProperties(text.align = 'center')
df_Flex[,,to='header'] <- parProperties(text.align = 'center')
这很烦人,因为如果我想执行其他格式化,我将需要 每次写代码两次。
有谁知道为什么会这样,以及如何解决问题?
答案 0 :(得分:3)
使用flextable包本身而不是reporteRs中提供的函数,因为这些函数提供了一个更简单的界面来修改body和header参数。使用magrittr或dplyr中的管道运算符的示例:
df_Flex2 =
regulartable(df) %>%
width(width = c(0.5, 2)) %>%
align(align = "center", part = "all")
修改:格式化小数位
要控制在可调整的非整数值中显示的小数位数,请使用set_formatter函数,并为要显示的每列显示不同小数位的自定义格式:
df_Flex2 =
regulartable(df) %>%
set_formatter(a = function(x) sprintf("%.1f", x),
b = function(x) sprintf("%.1f", x)) %>%
width(width = c(0.5, 2)) %>%
align(align = "center", part = "all")
df_Flex2
输出:
如果您不想为单个列命名,可以使用set_formatter_type代替set_formatter为数字双精度类型设置修订的默认值。此示例将可调整的双精度小数位数设置为管道表达式中的1位小数:
set_formatter_type(fmt_double = "%.1f")
如果不与管道(%>%
)一起使用,则需要提供可调整变量的名称作为第一个参数:
set_formatter_type(df_Flex2, fmt_double = "%.1f")