我正在使用knitr::kable()
将表格作为 R Markdown 文档的一部分进行呈现(这本身就是 bookdown 项目的一部分)。特别是,booktabs选项(通过将booktabs
参数设置为等于TRUE
)使表格看起来很漂亮。但是,我希望每隔五行就不会有空格。
例如,这里是代码以及当作为PDF呈现时,bookdown演示中的表格如何显示:
knitr::kable(
head(iris, 20), caption = 'Here is a nice table!',
booktabs = TRUE
)
我想要在每五行之后出现的空间不被包括在内,但我似乎无法在knitr::kable()
中找到这样做的设置。
答案 0 :(得分:23)
行高不总是相等的原因是默认情况下,当booktabs指定为TRUE时,kable每5行插入一个\addlinespace
,如图所示here:
linesep = if (booktabs) c('', '', '', '', '\\addlinespace') else '\\hline'
要更改此设置,请将linesep = ""
作为参数添加到kable()
。
knitr::kable(
head(iris, 20), caption = 'Here is a nice table!',
booktabs = TRUE,
linesep = ""
)
有关详细信息,请参阅Get rid of \addlinespace in kable。
如果您想更改样式,也可以使用此选项。例如,linesep = c("", "", "", "\\hline")
将每四个空格添加一条水平线。
答案 1 :(得分:3)
基于上面的例子,我对控制分离很感兴趣。这与以下辅助函数配合得很好。这样就可以控制线分离的位置。
linesep<-function(x,y=character()){
if(!length(x))
return(y)
linesep(x[-length(x)], c(rep('',x[length(x)]-1),'\\addlinespace',y))
}
knitr::kable(
head(iris, 20), caption = 'Here is a nice table!',
booktabs = TRUE,
linesep = linesep(c(3,2,1,1,3,5,4,1))
)