R Markdown文档

时间:2018-02-27 18:29:44

标签: r knitr r-markdown bookdown kable

我正在使用knitr::kable()将表格作为 R Markdown 文档的一部分进行呈现(这本身就是 bookdown 项目的一部分)。特别是,booktabs选项(通过将booktabs参数设置为等于TRUE)使表格看起来很漂亮。但是,我希望每隔五行就不会有空格。

例如,这里是代码以及当作为PDF呈现时,bookdown演示中的表格如何显示:

knitr::kable(
  head(iris, 20), caption = 'Here is a nice table!',
  booktabs = TRUE
)

iris table with booktabs

我想要在每五行之后出现的空间不被包括在内,但我似乎无法在knitr::kable()中找到这样做的设置。

2 个答案:

答案 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 = ""
)

enter image description here

  

有关详细信息,请参阅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))
)

enter image description here