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

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

Я хочу изменить стиль отдельных ячеек.

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

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

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

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

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

Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
Включение UTF-8 в jsPDF с помощью Angular
Включение UTF-8 в jsPDF с помощью Angular
Привет, разработчики, я предполагаю, что вы уже знаете, как экспортировать pdf через jsPDF. Если ответ отрицательный, то вы можете ознакомиться с моей...
1
0
6 606
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как вы видели, функция 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)

```

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

Я добавил несколько примеров cell_spec для людей, которые не хотят запоминать слишком много латекса;)

Hao 02.05.2018 18:52

@Hao, я предпочитаю этот метод :) не понимал, что так можно

Michael Harper 02.05.2018 19:09

Хао, спасибо за добавление латексного эквивалента. Мне нужно было немного больше гибкости (ячейка частично выделена жирным шрифтом) - надеюсь, это поможет!

Nova 22.09.2018 21:07

как добиться этого в выводе html?

Nicolas Molano 09.04.2020 17:23

Времени на ответ не хватает, но рекомендую посмотреть документацию: cran.r-project.org/web/packages/kableExtra/vignettes/…

Michael Harper 09.04.2020 17:39

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