如何使用一些最小格式将数据框导出到乳胶?

how to export a dataframe to latex with some minimal formatting?

考虑这个简单的例子

library(dplyr)
dataframe <- data_frame(mytext1 = c('HELLO',
                                   'WORLD'),
                        mytext2 = c('HELLO',
                                   'AGAIN'),
                        value1 = c(1,2), 
                        value2 = c(1,2))

# A tibble: 2 x 4
  mytext1 mytext2 value1 value2
    <chr>   <chr>  <dbl>  <dbl>
1   HELLO   HELLO      1      1
2   WORLD   AGAIN      2      2

我想将此数据框导出到乳胶 table,但要进行一些小的(但很重要的)调整。

特别是,我想在 Latex 输出中添加 一个分隔文本变量的超级列 和另一个分隔数字变量的超级列。也就是说,本图像中 matcom 的精神:

我尝试了 R 包 xtabletables 但我无法达到接近的效果(可能是因为它们创建了汇总统计信息 tables)。我在这里遗漏了什么吗?

谢谢!

您可以使用 knitr 包中的 kable 加上 kableExtra 包来执行此操作:

```{r table, results='asis'}
library(knitr)
library(kableExtra)
library(magrittr)

dataframe <- data.frame(mytext1 = c('HELLO',
                                   'WORLD'),
                        mytext2 = c('HELLO',
                                   'AGAIN'),
                        value1 = c(1,2), 
                        value2 = c(1,2))

dataframe %>%
    kable(format = 'latex', booktabs = TRUE) %>%
    add_header_above(header = c("Text" = 2, "Values" = 2))
``` 

这里我展示了包含在 RMarkdown 块中的代码,其中 table 在编织成 PDF 时自动包含,但代码也应该在 RMarkdown 之外独立运行。

运行 代码本身你得到 table 的 Latex 代码作为输出:

\begin{tabular}{llrr}
\toprule
\multicolumn{2}{c}{Text} & \multicolumn{2}{c}{Values} \
\cmidrule(l{2pt}r{2pt}){1-2} \cmidrule(l{2pt}r{2pt}){3-4}
mytext1 & mytext2 & value1 & value2\
\midrule
HELLO & HELLO & 1 & 1\
WORLD & AGAIN & 2 & 2\
\bottomrule
\end{tabular}