在 R flextable 中,我如何对齐合并 headers 下方的列与自动调整
In R flextable how can I align columns below merged headers with autofit
我正在尝试使用 R 中的 flextable
包从一本书中复制 table。我在 table 中的 header 下面有两列标记为align(align = "center", part = "all")
并且如果我使用 autofit(part = "all")
.
它们没有很好地对齐
有没有办法解决这个问题,使 header 下面的列不向右偏移?
完整代码如下:
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), "Total"),
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
包。但是当我在 合并 header 之前对齐 table 时,它对我有用。也许这就是诀窍。
flextable(`Table 8.1`) %>%
add_header_row(values = c("Pay Higher Taxes",
"Cut Living Standard",
"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")
我正在尝试使用 R 中的 flextable
包从一本书中复制 table。我在 table 中的 header 下面有两列标记为align(align = "center", part = "all")
并且如果我使用 autofit(part = "all")
.
有没有办法解决这个问题,使 header 下面的列不向右偏移?
完整代码如下:
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), "Total"),
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
包。但是当我在 合并 header 之前对齐 table 时,它对我有用。也许这就是诀窍。
flextable(`Table 8.1`) %>%
add_header_row(values = c("Pay Higher Taxes",
"Cut Living Standard",
"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")