I am trying to create a latex formatted table in R with a \label{} option.
Something similar to
library(tidyverse)
library(knitr)
library(kableExtra)
data_frame(a = 1:3, b = 2:4) %>%
kable(align = 'c', format = 'latex') %>%
kable_styling(full_width = FALSE)
the resulting output is below, but i would like to add the \label{label_value} parameter to the latex table with a label_value I can define
\begin{table}[H]
\centering
\begin{tabular}{c|c}
\hline
a & b\\
\hline
1 & 2\\
\hline
2 & 3\\
\hline
3 & 4\\
\hline
\end{tabular}
\end{table}
I am trying to automatically create tables in R which I can save and then include in a latex document
If you put a caption in the call to kable
, you'll get a label automatically, based on the name you give to the code chunk.
If you are running it at the top level as in your example, it's kind of clunky: you need put the label in your caption, and you'll get two labels, yours and the auto-generated useless one. For example,
library(tidyverse)
library(knitr)
library(kableExtra)
data_frame(a = 1:3, b = 2:4) %>%
kable(align = 'c', format = 'latex',
caption = "Table caption \\label{tab:example}") %>%
kable_styling(full_width = FALSE)
which produces
\begin{table}[t]
\caption{\label{tab:}Table caption \label{tab:example}}
\centering
\begin{tabular}{c|c}
\hline
a & b\\
\hline
1 & 2\\
\hline
2 & 3\\
\hline
3 & 4\\
\hline
\end{tabular}
\end{table}
I'm not sure, but I'd expect in some circumstances you'd need to manually edit out the auto-generated label \label{tab:}
. So use knitr or R-markdown and avoid the problem.
You can use knitr::opts_current
to control the automatic label generated with the caption:
> library(knitr)
> library(kableExtra)
> opts_current$set(label = "hello")
> data.frame(a = 1:3, b = 2:4) %>%
+ kable(align = 'c', format = 'latex',
+ caption = "Table caption") %>%
+ kable_styling(full_width = FALSE)
\begin{table}
\caption{\label{tab:hello}Table caption}
\centering
\begin{tabular}[t]{c|c}
\hline
a & b\\
\hline
1 & 2\\
\hline
2 & 3\\
\hline
3 & 4\\
\hline
\end{tabular}
\end{table}
There's a built-in option for that.
kable(..., label = "something")
More info at: https://github.com/haozhu233/kableExtra/issues/486
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With