首页 > 解决方案 > 使用带有 kableExtra 格式的 R“tables”包的字幕

问题描述

我正在尝试将标题添加到 R 中包“tables”的表输出,然后使用 kableExtra 进行附加格式化。

尽管其他线程已经找到了通过使用额外的 LaTeX 代码添加标题标题的方法(使用 Hmisc LaTeX 函数Hmisc::latex 编织时,LaTeX 表中没有出现标题,而 Hmisc::latex 没有打印带有表格对象的标题),这些解决方案似乎与toKable()允许使用 kableExtra 进行额外格式化的更新功能。

通常会在kable(x, caption = "mycaption")使用时添加标题。但是,如下生成时,会发生错误(Error in toKable(., booktabs = T) : 'table' must be a 'tabular' object.)。如果我尝试通过添加任何其他格式latex(),例如添加标题,则对象类型将发生变化,使其无法与该toKable()功能一起使用。toKable()任何有关如何使用已通过的其他 LaTeX 格式的见解latex()将不胜感激!

library(tables)
library(magrittr)
library(kableExtra)

 tabular((Species + 1) ~ (n=1) + Format(digits=2)* (Sepal.Length + Sepal.Width)*(mean + sd), data=iris) %>%
   latex(., options = list(tabular = "longtable",
                           toprule = "\\caption{Table 1. My favorite caption}\\\\\\toprule")) %>%
   toKable(., booktabs = T)

传递给之前的 LaTeX 输出toKable()

\begin{longtable}{lccccc}
\caption{Table 1. My favorite caption}\\\toprule
 &  & \multicolumn{2}{c}{Sepal.Length} & \multicolumn{2}{c}{Sepal.Width} \\ 
Species  & n & mean & sd & mean & \multicolumn{1}{c}{sd} \\ 
\hline
setosa  & $\phantom{0}50$ & $5.01$ & $0.35$ & $3.43$ & $0.38$ \\
versicolor  & $\phantom{0}50$ & $5.94$ & $0.52$ & $2.77$ & $0.31$ \\
virginica  & $\phantom{0}50$ & $6.59$ & $0.64$ & $2.97$ & $0.32$ \\
All  & $150$ & $5.84$ & $0.83$ & $3.06$ & $0.44$ \\
\hline 
\end{longtable}

标签: rformattingcaptionkableextra

解决方案


在修改了一些代码并尝试了解每个代码的工作原理之后......我尝试将选项列表直接粘贴到toKable. 这似乎有效,并且似乎toKablelatex().

tabular((Species + 1) ~ (n=1) + Format(digits=2)* (Sepal.Length + Sepal.Width)*(mean + sd),
        data=iris) %>%
  toKable(., booktabs = T,
          options = list(tabular = "longtable",
                                          toprule = "\\caption{My favorite caption}\\\\\\toprule"))

如上所愿,这会正确吐出以下 LaTex 代码:

\begin{longtable}{lccccc}
\caption{Table 1. My favorite caption}\\\toprule
 &  & \multicolumn{2}{c}{Sepal.Length} & \multicolumn{2}{c}{Sepal.Width} \\ \cmidrule(lr){3-4}\cmidrule(lr){5-6}
Species  & n & mean & sd & mean & \multicolumn{1}{c}{sd} \\ 
\midrule
setosa  & $\phantom{0}50$ & $5.01$ & $0.35$ & $3.43$ & $0.38$ \\
versicolor  & $\phantom{0}50$ & $5.94$ & $0.52$ & $2.77$ & $0.31$ \\
virginica  & $\phantom{0}50$ & $6.59$ & $0.64$ & $2.97$ & $0.32$ \\
All  & $150$ & $5.84$ & $0.83$ & $3.06$ & $0.44$ \\
\bottomrule 
\end{longtable}

然后可以根据需要在报告或其他方式中显示 LaTeX 代码。在转换为 PDF 的 Rmarkdown 文档中,这可能看起来像(记得调用tablesandkableExtra包):

在此处输入图像描述


推荐阅读