在R中的kableExtra包中,column_spec函数无法正常工作。

3
我想使用kable(,'latex')更改pdf中的列宽,但该函数无法正常工作。 有人知道为什么吗? 这是我的代码:
   table = knitr::kable(jeden, "latex" , row.names = F ,  align = "llrrrrrrrrrr" , escape = F, booktabs = F, caption = '1. Sprzedaz uslug i towarow razem') 
   kableExtra::column_spec(table, 1, width = "1cm", bold = TRUE, italic = TRUE)
2个回答

2

这并不是一个错误,而是knitr::kable()align的一个相对奇怪的设置。在xtable中,您可以将align放在字符串中,但是对于kable,您需要提供一个向量。在您的情况下,如果您像这样放置align = c(rep("l", 2), rep("r"), 2),则应该没有问题。


哇,这个完美地工作了!太棒了,非常感谢!!我浪费了很多时间试图做这个... - undefined
@Hao 奇怪,对我来说仍然像是一个错误,因为 align = "llrr" 在HTML输出中是有效的。只有PDF/LaTeX文档不接受字符串。 - undefined

0

看起来 align 在 LaTeX/PDF 输出中破坏了你的 column_spec

这里有两个最小化且可复现的示例。

PDF 输出

---
title: "Untitled"
output:
  pdf_document: default
---

```{r}
library(knitr)
library(kableExtra)
x <- kable(head(mtcars[, 1:4]), "latex", row.names = F, align = "llrr")
column_spec(x, 1:2, width = "4cm", bold = TRUE, italic = TRUE)
```

enter image description here

如果从PDF RMarkdown文档中删除aligncolumn_spec将按预期工作。

HTML输出

---
title: "Untitled"
output:
  html_document: default
---

```{r}
library(knitr)
library(kableExtra)
x <- kable(head(mtcars[, 1:4]), "html", row.names = F, align = "llrr")
column_spec(x, 1:2, width = "4cm", bold = TRUE, italic = TRUE)
```

enter image description here

这对我来说似乎是一个 bug,我建议在 kableExtra GitHub 网站 上开启一个问题。如果你这样做,应该引用这篇文章,并包含一个最小的可复现示例(类似于我所做的)。


谢谢,听起来对我来说一样。我将提出一个问题,但是现在我需要快速解决方案。我已经移除了对齐和自定义的列宽,但我仍然需要对齐列,你知道其他解决办法吗? - undefined
@dorota 抱歉,除了编辑原始的LaTeX文件并在“tabular”环境中手动更改/修复列宽之外,我没有其他快速解决方案。 - undefined
再次你好,关于kable函数又遇到了一个问题。也许你知道'hline_after'参数是否正常工作?我有以下代码:row_spec( c(grep( 'TOTAL', final[,3])),bold = T , hline_after=T ),加粗效果对每条记录都有效,但是hline_after并非如此。我不知道为什么会这样。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接