在R flextable中,如何使用自动调整对齐合并标题下的列

问题描述

我正在尝试使用R中的flextable包从书中复制表格。我在表格中标有align(align = "center",part = "all")的标题下方有两列,如果我使用它们,它们的对齐方式不佳autofit(part = "all")

enter image description here

有没有一种方法可以解决此问题,从而使标题下的列不向右偏移?

这是完整的代码:

Opinions <- read.table("http://users.stat.ufl.edu/~aa/cat/data/Envir_opinions.dat",header = TRUE,stringsAsFactors = TRUE)
# Make contingency table
tab <- as.matrix(addmargins(xtabs(~y1 + y2,data = Opinions)))

library(tidyverse)  # for tibble()

# Add label as the first column and variable names
`Table 8.1` <- tibble(`Pay Higher Taxes` = c("Yes","No","Total"),Yes = tab[,1],No = tab[,2],Total = tab[,3])

library(flextable)
my_header <- data.frame(
  col_keys = colnames(`Table 8.1`),line1 = c("Pay Higher Taxes",rep("Cut Living Standards",2),line2 = colnames(`Table 8.1`)
)

library(flextable)
flextable(`Table 8.1`,col_keys = my_header$col_keys) %>%
  set_header_df(
    mapping = my_header,key = "col_keys"
  ) %>% 
  theme_booktabs() %>% 
  merge_h(part = "header") %>% 
  merge_v(part = "header") %>% 
  merge_h(part = "body") %>% 
  merge_v(part = "body") %>%
  align(align = "center",part = "all") %>% 
  autofit(part = "all") %>% 
  set_caption(caption = "Table 8.1")

解决方法

我对flextable软件包并不陌生。但是当我在合并标题之前 对齐表时,它对我有用。也许就是诀窍。

  
  flextable(`Table 8.1`) %>%
    add_header_row(values = c("Pay Higher Taxes","Cut Living Standard","Total")) %>%
    theme_booktabs() %>%
    autofit(part = "all") %>%
    align(align = "center",part = "all")%>% 
    merge_h(part = "header") %>%
    merge_v(part = "header") %>%
    set_caption(caption = "Table 8.1")  
    

enter image description here

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...