考虑这个简单的例子
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
我想将这个数据框导出到一个乳胶表,但有一些(但很重要的)调整。
特别是,我希望在latex输出中添加一个用于分隔文本变量的超列和另一个用于分隔数值变量的超列。也就是说,在此图片中mat
和com
的精神:
我尝试了R包xtable
和tables
,但我无法实现某些目标(可能是因为它们创建了摘要统计表)。我在这里错过了什么吗?
谢谢!
答案 0 :(得分:4)
您可以使用kable
包中的knitr
加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块中包含的代码,其中在编织为PDF时会自动包含该表,但代码也应该在RMarkdown之外自行运行。
单独运行代码,您将获得表的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}