如何解决修改或检索 kableExtra 的乳胶输出
有没有办法修改或子集kableExtra的乳胶代码输出的一部分?
kable(head(mtcars)[1:3],format = "latex",booktabs = TRUE)
是否可以:
a) 直接编辑其中一行(例如将“Model”放在 & mpg & cyl & disp 之前)
b) 或者,只是将 \midrule 和 \bottomrule 之间的所有内容子集化,但删除其他所有内容
我希望上面的选项 b) 是围绕表格的主要内容的预格式化行编写我自己的乳胶代码,例如:
cat(c("\\begin{table}[!htb]
\\begin{tabular}{lrrr}
\\toprule
Model & MPG & CYL & disP\\",t1,# these are the rows between midrule and bottomrule
"\\end{tabular}
\\end{table}"),file = "my_own.tex")
解决方法
也许这就是您要找的。由于 kable
输出是一个字符串,您可以通过字符串工具对其进行操作。使用例如stringr
包,您可以编写一个函数来提取 \midrule
和 \bottomrule
之间的部分,如下所示:
library(kableExtra)
library(stringr)
tbl <- kable(head(mtcars)[1:3],format = "latex",booktabs = TRUE)
get_tbl_body <- function(x) {
start <- str_locate(tbl,"\\\\midrule")[1]
end <- str_locate(tbl,"\\\\bottomrule")[2]
str_sub(x,start,end)
}
t1 <- get_tbl_body(tbl)
cat(c("\\begin{table}[!htb]","\\begin{tabular}{lrrr}","\\toprule","Model & MPG & CYL & DISP\\\\",t1,# these are the rows between midrule and bottomrule
"\\end{tabular}","\\end{table}"),sep = "\n")
#> \begin{table}[!htb]
#> \begin{tabular}{lrrr}
#> \toprule
#> Model & MPG & CYL & DISP\\
#> \midrule
#> Mazda RX4 & 21.0 & 6 & 160\\
#> Mazda RX4 Wag & 21.0 & 6 & 160\\
#> Datsun 710 & 22.8 & 4 & 108\\
#> Hornet 4 Drive & 21.4 & 6 & 258\\
#> Hornet Sportabout & 18.7 & 8 & 360\\
#> \addlinespace
#> Valiant & 18.1 & 6 & 225\\
#> \bottomrule
#> \end{tabular}
#> \end{table}
由 reprex package (v0.3.0) 于 2021 年 1 月 3 日创建
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。