Я создаю таблицы, которые будут отображаться с использованием 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, и не уверен, что делать дальше.






У меня были аналогичные проблемы с неработающим 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
Привет, Шахаб, если вы скопируете и вставите код, который я написал, в свежий RMD, создаст ли он PDF-файл с таблицами правильной ширины?
Еще один момент, который следует упомянуть, заключается в том, что этот код скомпилирован с дистрибутивом Tex Live 2019.
Просто замените 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}
У меня все еще та же проблема, ошибка не исправлена