使用kableExtra格式的R“表格”包的字幕

时间:2019-04-02 16:36:56

标签: r formatting caption kableextra

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

尽管其他线程找到了使用其他LaTeX代码(Caption not appearing for LaTeX table when knitting using Hmisc LaTeX FunctionHmisc::latex not printing caption w/ tabular object)来添加标题标题的方法,但这些解决方案似乎与最新的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}

1 个答案:

答案 0 :(得分:0)

稍微修改一下代码并尝试理解它们的工作原理后,我尝试将选项列表直接粘贴到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文档中,它看起来像(记住调用tableskableExtra包):

enter image description here