KableExtra column_spec width не работает

Я создаю таблицы, которые будут отображаться с использованием Rmarkdown в HTML. Я использую kable и экспериментирую с kableExtra, чтобы добавить функции в свои таблицы. Я не могу заставить параметр ширины в column_spec работать при применении его ко всем столбцам в таблице:

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)

Это дает таблицу, которая выглядит как это. Я могу увеличить ширину и изменить оба столбца, но когда он становится меньше, это не работает. Я могу сделать один столбец меньше, а другой - нет:

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)

Это дает таблицу, которая выглядит как это. Первый столбец был соответствующим образом изменен, но я не могу получить этот эффект, когда пытаюсь изменить размер обоих столбцов. Я пробовал делать отдельные строки column_spec для каждого столбца, используя escape = F, и не уверен, что делать дальше.

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
5
0
3 819
5

Ответы 5

У меня были аналогичные проблемы с неработающим column_spec. Я смог найти исправление, которое сработало для моих целей, поиграв с опцией width_min. Может, это поможет.

Моя проблема заключалась в том, что ни одна из ширины столбцов не была отрегулирована с помощью column_spec, даже когда я попробовал все параметры, которые вы упомянули выше. В результате некоторые колонки оказались слишком тонкими. Я установил width_min = "3in" и исправил. Это не было идеальным исправлением, потому что теперь у меня остался другой столбец, который стал слишком широким, но это, по крайней мере, сделало мою таблицу немного более читаемой.

Это может быть немного поздно, но я только что работал с пакетом 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

У меня все еще та же проблема, ошибка не исправлена

Shahab Einabadi 18.12.2019 18:21

Привет, Шахаб, если вы скопируете и вставите код, который я написал, в свежий RMD, создаст ли он PDF-файл с таблицами правильной ширины?

Rob Smith 19.12.2019 22:49

Еще один момент, который следует упомянуть, заключается в том, что этот код скомпилирован с дистрибутивом Tex Live 2019.

Rob Smith 19.12.2019 22:52

Просто замените width на width_min!

Я использую Tex Live 2020, и эта проблема все еще существует - похоже, что в column_spec есть ошибка. Все эти примеры запускаются без проблем, если я удалю команды column_spec. Как только я включаю команды column_spec, я получаю загадочную ошибку, которая гласит: «Неопределенная управляющая последовательность, латексная ошибка: недопустимый символ в массиве arg. The description is also cryptic: ... n} |> {\ raggedleft \ arraybackslash} p {1.5in}}

Последовательность управления в конце верхней строки сообщения об ошибке никогда не было \ 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.

Исправление состоит в том, чтобы включить пакет массива в преамбулу латекса. Один из способов сделать это - добавить следующие строки в заголовок Rmarkdown:

header-includes:
  - \usepackage{array}

Другие вопросы по теме