在RMarkdown文档中调整使用kable()创建的表的宽度

N B*_*wer 20 r knitr r-markdown

在knitr中使用kable()函数创建表时,是否可以调整列的宽度?

对于具有两列的表,这样的块产生一个占据文档整个宽度的表.我想让列更窄. 这可以用kable()完成还是需要另一个包?

这个rmarkdown块

```{r}
df <- data.frame(x = 1:10,
           y = 11:20)
library(knitr)
kable(df)
```
Run Code Online (Sandbox Code Playgroud)

生成此表 在此输入图像描述

左对齐kable(df, align = "l")有点帮助,但我希望两列彼此相邻.

Hao*_*Hao 20

你可以尝试一下这个kableExtra包.

kable(x, "html") %>%
  kable_styling(full_width = F)
Run Code Online (Sandbox Code Playgroud)


Mar*_*Blo 7

我知道我的评论已经很久了。但正如@Tjebo 指出的那样,我的评论值得回答,我想听从他的建议。通过定义表格格式并添加一些 CSS 样式,您可以像这样更改大小:knitr::kable(x, format = "html", table.attr = "style='width:30%;'"). 这可能会导致表格行丢失。kableExtra提供了很好的样式工具来添加例如行。

library(knitr)
library(tidyverse)
library(kableExtra)

df <- data.frame(x = 1:10, y = 11:20)

kable(df, format = "html", table.attr = "style='width:30%;'")

kable(df, format = "html", table.attr = "style='width:30%;'") %>% 
  kableExtra::kable_styling()
Run Code Online (Sandbox Code Playgroud)

  • 请注意,需要显式的 `format = "html"`。如果保留默认值并 knit 为 html,则不起作用 (3认同)

mys*_*ous 6

我最喜欢的东西是flextable包装,因为1)表格很漂亮; 2)您可以更轻松地控制宽度和字体大小; 3)它们可以很好地呈现到HTML Word中。使用数据:

```{r}
library(flextable)
library(magrittr)
df <- data.frame(x = 1:10, y = 11:20)
df %>% regulartable() %>% autofit() %>% 
width(j=~x,width=1) %>% width(j=~y,width=1)
```
Run Code Online (Sandbox Code Playgroud)

将两个值都width设置为1时,各列相互靠近:

flextable-1

如果调整width(j=~x,width=2) %>% width(j=~y,width=2)表的最后一行,则如下所示:

flextable-2