我試圖通過使用 kableExtra 附加幾個具有相同列數的小表來制作一個大表。具體來說,假設我有以下資料集和 kables:
library(kableExtra)
df1 <- data.frame(x = c("a","b"), y=1:2)
df2 <- data.frame(x = c("c","d"), y=3:4)
k1 <- kable(df1, format = 'latex') |>
add_header_above(c("Header 1 " = 2))
k2 <- kable(df2, format = 'latex') |>
add_header_above(c("Header 2" = 2))
我想將 k1 和 k2 加入同一個表中,獲得作為輸出:
\begin{tabular}{l|r}
\hline
\multicolumn{2}{c}{Header 1 } \\
\cline{1-2}
x & y\\
\hline
a & 1\\
\hline
b & 2\\
\hline
\multicolumn{2}{c}{Header 2} \\
\cline{1-2}
x & y\\
\hline
c & 3\\
\hline
d & 4\\
\hline
\end{tabular}
這將翻譯成:

但是,我不想加入資料框,因為它們來自幾個不同的聚合。有人能幫我嗎?
uj5u.com熱心網友回復:
歡迎來到 SO!我不知道如何在不先加入資料框的情況下直接組合表格。但是,使用pack_rows指定要組合在一起的行應該適合您的目的。
rbind(df1, df2) %>%
kbl(format = "latex", caption = "Combined Tables") %>%
kable_paper("striped", full_width = F) %>%
pack_rows("Header 1", 1, 2) %>%
pack_rows("Header 2", 3, 4)
生成的 LaTeX 代碼如下。
\begin{table}
\caption{Combined Tables}
\centering
\begin{tabular}[t]{l|r}
\hline
x & y\\
\hline
\multicolumn{2}{l}{\textbf{Header 1}}\\
\hline
\hspace{1em}a & 1\\
\hline
\hspace{1em}b & 2\\
\hline
\multicolumn{2}{l}{\textbf{Header 2}}\\
\hline
\hspace{1em}c & 3\\
\hline
\hspace{1em}d & 4\\
\hline
\end{tabular}
\end{table}

?pack_rows如果要修改組標簽、添加\hlines 或其他外觀更改,請查看來自 kableExtra的檔案。
uj5u.com熱心網友回復:
像這樣的東西?
rbind(df1, df2) |>
kbl() |>
add_header_above(c("Header 1 " = 2)) |>
kable_styling(full_width = F)

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/373011.html
標籤:r 凯布尔 kableextra
