Выбор и раскраска отдельных ячеек таблицы с помощью kableExtra в R markdown cell_spec - PullRequest
0 голосов
/ 01 мая 2018

Я использую уценку R в сочетании с LaTeX для создания динамических отчетов в формате PDF. Для генерации итоговых таблиц я использую пакет kableExtra .

Я бы хотел изменить оформление отдельных ячеек.

Пример: рассмотрим кадр данных R mtcars[1:10, 1:5]. Использование этого будет преобразовано в некую красивую таблицу:

kable(mtcars[1:10, 1:5], format="latex", booktabs = T)` 

Rendered table

Теперь я хочу изменить стиль определенных ячеек. Скажем, 2-я и 8-я запись в mpg должна быть зеленого цвета, 4-я и 5-я из disp должны быть оранжевого цвета и курсива, а последние четыре записи в drat должны быть красный и жирный. И те же самые ячейки должны быть такими, независимо от того, какие записи находятся в ячейках.

Я прекрасно осведомлен о документации и примерах, таких как выделение строк и столбцов. Но документация для cell_spec имеет дело только с условной логикой, зависящей от значений ячеек, в то время как я бы хотел покрасить ячейки независимо.

1 Ответ

0 голосов
/ 02 мая 2018

Как вы видели, функция cell_spec полезна, если вы хотите раскрасить всю строку или столбец. Поскольку kableExtra не предоставляет функции для непосредственного редактирования отдельной ячейки, самый простой способ сделать это - напрямую вставить команды LaTeX в ячейку. Я использовал этот подход в аналогичном ответе здесь :

---
output: pdf_document
header-includes:
  - \usepackage{booktabs}
---

```{r pressure, echo=FALSE}

df <- mtcars[1:10, 1:5]

df[1,5] <- paste0("\\underline{", df[1,5], "}")
df[1,1] <- paste0("\\textcolor{red}{", df[1,1], "}")
df[2,2] <- paste0("\\textcolor{green}{\\textbf{", df[2,2], "}}")
# # Equivalent to:
# library(kableExtra)
# df[1, 5] <- cell_spec(df[1, 5], "latex", underline = T)
# df[1, 1] <- cell_spec(df[1, 1], "latex", color = "red")
# df[2, 2] <- cell_spec(df[2, 2], "latex", color = "green", bold = T)

knitr::kable(df, format="latex", booktabs = T, escape = F)

```

enter image description here

Вы можете адаптировать это, чтобы работать для вашего примера. Вы можете проверить доступное форматирование LaTeX здесь: https://www.sharelatex.com/learn/Bold,_italics_and_underlining

...