kableExtra column_spec宽度不起作用

时间:2018-07-31 12:49:23

标签: html r-markdown kable kableextra

我正在创建将使用Rmarkdown呈现为HTML的表。我正在使用kable,并且一直在尝试kableExtra将功能添加到表中。将其应用于表中的所有列时,我无法在column_spec中使用width选项:

data.frame(RRmin=1, RRmax=10) %>%
   dplyr::rename(`Reportable Range Min` = RRmin, `Reportable Range Max` = RRmax) %>%
   kable() %>%
   column_spec(1:2, width = "0.5in") %>%
   kable_styling(c("bordered", "condensed"), full_width = F)

这将提供一个类似于this的表格。 我可以增加宽度,并且两列都更改,但是当宽度变小时,它似乎不起作用。我可以缩小一列,但不能缩小另一列:

data.frame(RRmin=1, RRmax=10) %>%
   dplyr::rename(`Reportable Range Min` = RRmin, `Reportable Range Max` = RRmax) %>%
   kable() %>%
   column_spec(1, width = "0.5in") %>%
   kable_styling(c("bordered", "condensed"), full_width = F)

这将提供一个类似于this的表格。第一列已适当更改,但是当我尝试更改两列的大小时我无法获得此效果。我已经尝试过使用Escape = F对每列进行单独的column_spec行,并且不确定接下来要尝试什么。

5 个答案:

答案 0 :(得分:0)

column_spec不起作用,我遇到了类似的问题。通过使用width_min选项,我能够找到适合自己目的的修复程序。也许会有所帮助。

我的问题是,即使我尝试了上面提到的所有选项,列的宽度似乎都没有被column_spec调整。结果是某些色谱柱太细了。我设置width_min =“ 3in”并将其修复。这不是一个完美的解决方案,因为现在我剩下的其他列太宽,但这至少使我的表更具可读性。

答案 1 :(得分:0)

这可能有点晚了,但是我一直在使用kableExtra软件包,看来您的代码现在可以正常工作了。

起初,我认为它可能与kable_styling组件的顺序有关,但似乎与它的顺序无关紧要。也许这是该软件包中的错误,此错误已得到修复。无论您使用column_spec(column = 1:2, width = "2in")还是column_spec(1:2, width = "2in"),这也不重要。两者似乎都工作良好,对列大小的修改也是如此。见下文:

---
output: pdf_document
---

```{r global_options, include=FALSE}
# Just some setup:

sapply(c("knitr", "tidyverse", "kableExtra"), require, character.only = TRUE)

options(knitr.kable.NA = '', knitr.table.format = "latex")

knitr::opts_chunk$set(fig.path = 'figures/',
                  echo = FALSE, warning = FALSE, message = FALSE)

opts_chunk$set(echo = FALSE,
           message = FALSE,
           warning = FALSE,
           fig.align = "center",
           fig.width = 5,
           fig.pos = 'H',
           as.is = TRUE)
```

```{r variable-names-table, as.is=TRUE}
# Size example 1; 1.5 inch columns
data.frame(RRmin=1, RRmax=10) %>%
    dplyr::rename(`Reportable Range Min` = RRmin, `Reportable Range Max` = RRmax) %>%
   kable() %>%
   kable_styling(c("bordered", "condensed"), full_width = F) %>%
   column_spec(column = 1:2, width = "1.5in")

# Size example 2; 3 inches
data.frame(RRmin=1, RRmax=10) %>%
    dplyr::rename(`Reportable Range Min` = RRmin, `Reportable Range Max` = RRmax) %>%
   kable() %>%
   column_spec(column = 1:2, width = "3in") %>%
   kable_styling(c("bordered", "condensed"), full_width = F)

# To set columns 1 and two to different sizes
data.frame(RRmin=1, RRmax=10) %>%
    dplyr::rename(`Reportable Range Min` = RRmin, `Reportable Range Max` = RRmax) %>%
   kable() %>%
   column_spec(column = 1, width = "3in") %>%
   column_spec(column = 2, width = "2in") %>%
   kable_styling(c("bordered", "condensed"), full_width = F)

```

为处理此问题的其他人提供注释。以上将作为RMD运行

R版本3.6.1,在Mac上 RStudio 1.2.1335 kableExtra 1.1.0 针织衫1.25 tidyverse 1.2.1

答案 2 :(得分:0)

只需用width_min代替宽度!

答案 3 :(得分:0)

我正在使用 Tex Live 2020,但此问题仍然存在 - column_spec 似乎存在错误。如果我删除 column_spec 命令,所有这些示例都可以正常运行。一旦我包含 column_spec 命令,我就会收到一个神秘的错误,上面写着“未定义的控制序列,乳胶错误:数组 arg. The description is also cryptic: ...n}|>{\raggedleft\arraybackslash}p{1.5 中的非法字符在}}

顶行末尾的控制序列 您的错误消息从未被 \def'ed。如果你有 拼错了 (e.g., \hobx), type I and the correct spelling (e.g., I\hbox). Otherwise just continue, and I'll forget about whatever was undefined. 删除 column_spec 命令解决了问题。

答案 4 :(得分:0)

解决方法是在 Latex 序言中包含数组包。一种方法是将以下几行添加到您的 Rmarkdown 标头中:

header-includes:
  - \usepackage{array}