我正在使用Hmisc
R中的软件包来生成可复制的LaTex表,并希望取消\midrule
默认在booktabs模式下生成的一些水平线()。我已经筛选了Hmisc文档以及tex.stackexchange和此处的许多Hmisc解决方案,但我不相信类似的答案(但是如果我错了,请纠正我)。
这是一个可以重现的最小示例:
library(Hmisc)
myDF <- data.frame("foo" = c(1:10),
"bar" = rep(c("a","b"),5),
"baz" = c(21:30))
latex(myDF,
file="",
rowname = "",
rowlabel = "",
rgroup = c("Group A", "Group B", "Group C"),
n.rgroup = c(3, 4, 3),
booktabs = TRUE
)
生成以下输出:
%latex.default(myDF, file = "", rowname = "", rowlabel = "", rgroup = c("Group A", "Group B", "Group C"), n.rgroup = c(3, 4, 3), booktabs = TRUE, )%
\begin{table}[!tbp]
\begin{center}
\begin{tabular}{lrlr}
\toprule
\multicolumn{1}{l}{}&\multicolumn{1}{c}{foo}&\multicolumn{1}{c}{bar}&\multicolumn{1}{c}{baz}\tabularnewline
\midrule
{\bfseries Group A}&&&\tabularnewline
~~&$ 1$&a&$21$\tabularnewline
~~&$ 2$&b&$22$\tabularnewline
~~&$ 3$&a&$23$\tabularnewline
\midrule
{\bfseries Group B}&&&\tabularnewline
~~&$ 4$&b&$24$\tabularnewline
~~&$ 5$&a&$25$\tabularnewline
~~&$ 6$&b&$26$\tabularnewline
~~&$ 7$&a&$27$\tabularnewline
\midrule
{\bfseries Group C}&&&\tabularnewline
~~&$ 8$&b&$28$\tabularnewline
~~&$ 9$&a&$29$\tabularnewline
~~&$10$&b&$30$\tabularnewline
\bottomrule
\end{tabular}\end{center}
\end{table}
如何抑制输出中部分或全部'\ midrule'出现?
请注意,虽然我不喜欢使用来解决此问题Hmisc
,但我有一些约束可以使rgroup
标志以非常有效的方式解决。虽然我不相信xtable
或stargazer
(例如)提供可用的替代方法,但是我肯定会接受其他软件包,只要我可以保留示例中提供的带有行分组的布局即可。
我要处理的方法Hmisc::latex
是尽可能地使其接近,捕获结果,使用正则表达式对其进行修复,然后进行打印。在这里使用正则表达式会使我感到内gui,因为我怀疑有一种专门构建的方式来做这些事情,但是经过几个小时的搜索后,我不再在乎了。
在RMarkdown中,
---
title: "Table without midrules"
author: "Edward Visel"
date: "12/3/2016"
header-includes:
- \usepackage{booktabs}
output: pdf_document
---
```{r table, message=FALSE, results='asis'}
library(Hmisc)
myDF <- data.frame("foo" = c(1:10),
"bar" = rep(c("a","b"),5),
"baz" = c(21:30))
tb <- capture.output(latex(myDF,
file="",
rowname = "",
rowlabel = "",
rgroup = c("Group A", "Group B", "Group C"),
n.rgroup = c(3, 4, 3),
booktabs = TRUE,
where = '!htbp' # so table prints in correct location
))[-1] # so LaTeX comment at beginning doesn't print
cat(grep('\\midrule', tb, value = TRUE, invert = TRUE)) # use gsub if you prefer
```
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句