【发布时间】:2020-08-29 10:02:38
【问题描述】:
我想只保留 kable 创建的乳胶表的“内部”行。我只知道这样做的繁琐和丑陋的方法......尝试更清洁的版本失败了。这是一个干净的失败:
kable.rewrap <- function( df, newname= "mytable" ) {
kt <- kable( df, "latex", booktabs=T )
notop <- strsplit(kt, "\\midrule")[[1]][2]
nosur <- strsplit(notop, "\\bottomrule" )[[1]][1] ## fails: doesn't like "\\"!
newkt <- paste0("\\begin{", newname, "}", nosur, "\n\\end{",newname,"}\n")
## attr(newkt, "format") <- chr "latex" # wrong
newkt
}
print(kable.rewrap( data.frame( x=1:3, y=1:3 ), "mytable" ))
应该产生
\begin{mytable}
\toprule
x & y\\
\midrule
1 & 1\\
2 & 2\\
3 & 3\\
\bottomrule
\end{mytable}
显然,我的乳胶代码现在应该定义一个环境mytable。我也对nosur行中的“bottomrule”感到困惑,但是“\\bottomrule”失败了。
(另一种选择是完全放弃 kable,只使用数据框,每行用 \ 分隔,每列用 & 分隔。)
建议表示赞赏。
【问题讨论】: