Carlos Cinelli
Carlos Cinelli

Reputation: 11597

How to add caption with the tables r package?

Using the iris data, we make a table with the tables package:

library(tables)
table <- tabular( (Sepal.Length+Sepal.Width) ~
           Format(format(digits=2))*(mean + sd), data=iris )

With the Hmisc package, we would add the caption with the latex function like this:

latex(table, caption="My table")

But that does not work with the tables package, because it defines an S3 method, latex.tabular.

So I have tried this, following an example in the package vignette:

latex(table, options=list(toprule="\\caption{My table}"))

But it does not work, it says that caption is outside float. How can I correctly add caption with the latex.tabular function from the tables package?

Upvotes: 2

Views: 3128

Answers (3)

Koray
Koray

Reputation: 481

The tables package now has a function latexTable(), when used with a latex.tabular object, can add caption and labels. See the vignette

Upvotes: 0

Roman_Numerals
Roman_Numerals

Reputation: 101

I am posting this to help late to help other people looking for help with this. I have been working to understand the tables package recently. The workflow I use is to export the table to a .tex file then pull those into my document which I compile with TexStudio. The solution above wont work with this workflow, so I am providing one which will, it will produce a caption below the table:


latex(table, , options=list(bottomrule = "\\bottomrule\\\\
                                             \\caption{My table}")

This will produce one above:


latex(table, , options=list(bottomrule = "\\caption{My table}\\\\
                                             \\toprule")

Upvotes: 0

Carlos Cinelli
Carlos Cinelli

Reputation: 11597

I figured out one way to do it and it is actually pretty easy: you just have to embed the tables package result inside the latex code.

Below one example with knitr, the << >>= is the r chunk code.

\begin{table}
\caption{My awesome table from tables package}
\begin{center}

<<cool multilevel table, results='asis', echo=FALSE>>=
latex(table)
@

\end{center}
\label{tab:mytable}
\end{table}

This generated this awesome table, now with title (in portuguese): enter image description here

Upvotes: 1

Related Questions