在knitr中使用kable()函数创建表时是否可以调整列的宽度?
对于具有两列的表,这样的块会生成一个占据文档整个宽度的表。我想让列更窄。 这可以用kable()完成,还是需要另一个包呢?
这个rmarkdown chunk
```{r}
df <- data.frame(x = 1:10,
y = 11:20)
library(knitr)
kable(df)
```
左对齐kable(df, align = "l")
有点帮助,但我喜欢彼此相邻的两列。
答案 0 :(得分:17)
您可以试用kableExtra
包。
kable(x, "html") %>%
kable_styling(full_width = F)
答案 1 :(得分:5)
我知道距发表评论已有很长时间了。但是正如@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()
答案 2 :(得分:2)
我最喜欢的是flextable
包,因为1)表格很漂亮,2)你可以更轻松地控制宽度和字体大小等内容,3)它们可以很好地呈现HTML 和< / em> 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)
```
将width
的两个值都设置为1,这些列紧密相连:
如果您将最后一行调整为width(j=~x,width=2) %>% width(j=~y,width=2)
,则表格如下所示:
答案 3 :(得分:0)
我是R的新手,但我的回答可能对这里的其他新手有用。专家,请随时纠正。
我遇到了与原始海报类似的问题:使用kable(),我的桌子不在页面上,我想重新缩放。我尝试了发布的其他答案,但没有成功,原因可能是我没有(完全或正确地)安装kableExtra或magrittr(允许您使用%>%的软件包)。
最终,我最终使用了Latex_options =“ scale_down”,如下所示:
endpoints <- read.delim("D:/RFiles/GenericName/Endpoints.txt",
header=TRUE, sep="\t", dec=".")
endpoints_table <- knitr::kable(endpoints,col.names=gsub("
[.]"," ",names(endpoints)), align="l",
caption = "Endpoints Available")
kable_styling(endpoints_table,latex_options="scale_down",
"striped") %>%
row_spec(0,bold=TRUE)