使用带有 kableExtra 格式的 R "tables" 包的字幕
Captions using R "tables" package with kableExtra formatting
我正在尝试向 table 包 "tables" 中的 "tables" 输出添加标题,然后使用 kableExtra 进行额外格式化。
虽然其他线程找到了通过使用额外的 LaTeX 代码 (Caption not appearing for LaTeX table when knitting using Hmisc LaTeX Function and Hmisc::latex not printing caption w/ tabular object) 添加标题 headers 的方法,但这些解决方案似乎与最近的 toKable()
功能不兼容,该功能允许使用 kableExtra 进行额外格式化。
通常会在使用 kable(x, caption = "mycaption")
期间添加说明。但是如下生成时会报错(Error in toKable(., booktabs = T) : 'table' must be a 'tabular' object.
)。似乎如果我尝试通过 latex()
添加任何其他格式,例如添加标题,object 类型将发生变化,使其无法与 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)
传递给 toKable()
之前的 LaTeX 输出:
\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$ & .01$ & [=12=].35$ & .43$ & [=12=].38$ \
versicolor & $\phantom{0}50$ & .94$ & [=12=].52$ & .77$ & [=12=].31$ \
virginica & $\phantom{0}50$ & .59$ & [=12=].64$ & .97$ & [=12=].32$ \
All & 0$ & .84$ & [=12=].83$ & .06$ & [=12=].44$ \
\hline
\end{longtable}
在对代码进行了一些修改并试图了解每个代码的工作原理之后...我尝试将选项列表直接粘贴到 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$ & .01$ & [=11=].35$ & .43$ & [=11=].38$ \
versicolor & $\phantom{0}50$ & .94$ & [=11=].52$ & .77$ & [=11=].31$ \
virginica & $\phantom{0}50$ & .59$ & [=11=].64$ & .97$ & [=11=].32$ \
All & 0$ & .84$ & [=11=].83$ & .06$ & [=11=].44$ \
\bottomrule
\end{longtable}
然后可以根据需要在报告或其他地方显示 LaTeX 代码。在转换为 PDF 的 Rmarkdown 文档中,它看起来像(记得调用 tables
和 kableExtra
包):
感谢您的分享,我正在寻找这个。我可以按上面的方式添加标题,但它仍然显示为正常 body 文本,并且在我呈现 Latex 文档时没有 table 引用。所以万一对其他人有用
对我有用的是使用小插图中的 latexTable 函数:
tab1<-latexTable(tabular((Species + 1) ~ (n=1) + Format(digits=2)
(Sepal.Length + Sepal.Width)*(mean + sd),data=iris), caption = "Iris sepal data", label = "sepals")
然后把它当作一个 kable object 并且可以添加 headers,等等
tab1 %>% add_header_above(c("Blah" = 1, "Bing" = 2, "Bong" = 2)) %>% save_kable(paste0(resultspath,"tab1.tex"), float = FALSE)
我正在尝试向 table 包 "tables" 中的 "tables" 输出添加标题,然后使用 kableExtra 进行额外格式化。
虽然其他线程找到了通过使用额外的 LaTeX 代码 (Caption not appearing for LaTeX table when knitting using Hmisc LaTeX Function and Hmisc::latex not printing caption w/ tabular object) 添加标题 headers 的方法,但这些解决方案似乎与最近的 toKable()
功能不兼容,该功能允许使用 kableExtra 进行额外格式化。
通常会在使用 kable(x, caption = "mycaption")
期间添加说明。但是如下生成时会报错(Error in toKable(., booktabs = T) : 'table' must be a 'tabular' object.
)。似乎如果我尝试通过 latex()
添加任何其他格式,例如添加标题,object 类型将发生变化,使其无法与 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)
传递给 toKable()
之前的 LaTeX 输出:
\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$ & .01$ & [=12=].35$ & .43$ & [=12=].38$ \
versicolor & $\phantom{0}50$ & .94$ & [=12=].52$ & .77$ & [=12=].31$ \
virginica & $\phantom{0}50$ & .59$ & [=12=].64$ & .97$ & [=12=].32$ \
All & 0$ & .84$ & [=12=].83$ & .06$ & [=12=].44$ \
\hline
\end{longtable}
在对代码进行了一些修改并试图了解每个代码的工作原理之后...我尝试将选项列表直接粘贴到 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$ & .01$ & [=11=].35$ & .43$ & [=11=].38$ \
versicolor & $\phantom{0}50$ & .94$ & [=11=].52$ & .77$ & [=11=].31$ \
virginica & $\phantom{0}50$ & .59$ & [=11=].64$ & .97$ & [=11=].32$ \
All & 0$ & .84$ & [=11=].83$ & .06$ & [=11=].44$ \
\bottomrule
\end{longtable}
然后可以根据需要在报告或其他地方显示 LaTeX 代码。在转换为 PDF 的 Rmarkdown 文档中,它看起来像(记得调用 tables
和 kableExtra
包):
感谢您的分享,我正在寻找这个。我可以按上面的方式添加标题,但它仍然显示为正常 body 文本,并且在我呈现 Latex 文档时没有 table 引用。所以万一对其他人有用
对我有用的是使用小插图中的 latexTable 函数:
tab1<-latexTable(tabular((Species + 1) ~ (n=1) + Format(digits=2)
(Sepal.Length + Sepal.Width)*(mean + sd),data=iris), caption = "Iris sepal data", label = "sepals")
然后把它当作一个 kable object 并且可以添加 headers,等等
tab1 %>% add_header_above(c("Blah" = 1, "Bing" = 2, "Bong" = 2)) %>% save_kable(paste0(resultspath,"tab1.tex"), float = FALSE)