我正在尝试在R中的“ tables”包的表输出中添加标题,然后使用kableExtra进行其他格式化。
尽管其他线程找到了使用其他LaTeX代码(Caption not appearing for LaTeX table when knitting using Hmisc LaTeX Function和Hmisc::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}
答案 0 :(得分:0)
稍微修改一下代码并尝试理解它们的工作原理后,我尝试将选项列表直接粘贴到toKable
中。这似乎可行,并且看来toKable
与latex()
拥有相似的选择。
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文档中,它看起来像(记住调用tables
和kableExtra
包):