Remove the table environment using kable (from R dataframe to TeX)

96 Views Asked by At

Hello suppose I have my dataframe as:

a <- data.frame("column 1" = letters[1:5], "column 2" = letters[6:10], "column 3" = rnorm(5))

I use kable to produce a TeX table

> kable(a, 'latex', booktabs = T, linesep = "", col.names = NULL)

\begin{tabular}{llr}
\toprule
a & f & -0.4681726\\
b & g & 0.0122811\\
c & h & 0.3477899\\
d & i & 0.9131300\\
e & j & 1.0050357\\
\bottomrule
\end{tabular}

I was looking into the documentation, and GPT but couldn't find an answer on removing the following lines. (I think that in Stata is with the esttab and fragment option)

\begin{tabular}{llr}
\toprule

\bottomrule
\end{tabular}

This is the desired output:

a & f & -0.4681726\\
b & g & 0.0122811\\
c & h & 0.3477899\\
d & i & 0.9131300\\
e & j & 1.0050357\\

I tried to do with gsub as:

a <- gsub("\\\\begin\\{tabular\\}\\{llr\\}\n\\\\toprule", "", a)
a <- gsub("\\\\bottomrule\n\\\\end\\{tabular\\}","", a)

But if my dataframe is slightly different (more or fewer columns) the first line does not apply.

How can I achieve this in a more general way?

Thanks in advance!

1

There are 1 best solutions below

0
Johannes Titz On BEST ANSWER

I would use xtable:

library(xtable)
latex <- xtable(a)
print(latex, 
      only.contents = T, # what you desire
      include.rownames = F, 
      include.colnames = F,
      hline.after = NULL, # no horizontal lines
      comment = F) # do not print timestamp and message

Producing:

  a & f & -0.69 \\ 
  b & g & 0.35 \\ 
  c & h & -0.40 \\ 
  d & i & -1.33 \\ 
  e & j & 2.71 \\

Optionally use file = "yourfile.tex" to write the table to file.