Как изменить шрифт (жирный / курсив) для ячейки в таблице kable в rmarkdown?
есть ли способ форматировать одну ячейку в таблице в rmarkdown? Я использую kable для создания таблицы следующим образом:
library(knitr)
kable(data.frame(c('a','b','c'),c(1,2,3)))
Я хочу выделить жирным шрифтом " c " в последней строке, а также добавить горизонтальную линию в конце таблицы. Любой указатели?
2 ответов
выделение ячеек, строк или столбцов с pander
довольно простой:
> df <- data.frame(c('a','b','c'),c(1,2,3))
> emphasize.strong.cells(which(df == 3, arr.ind = TRUE))
> pander(df)
-------------------------------
c..a....b....c.. c.1..2..3.
------------------ ------------
a 1
b 2
c **3**
-------------------------------
но добавление горизонтальной линии в таблицу выходит за рамки спецификации таблицы markdown.
просто обобщая вопрос, чтобы включить другие лица шрифта. Pandoc предлагает другие способы легко переформатировать текст, и как объясняется в RMarkdown Шпаргалка:
-
курсив может быть достигнуто с помощью
*italics*
-
полужирный может быть достигнуто с помощью
**bold**
- зачеркивание может быть достигнуто с помощью
~~strikethrough~~
этот выход будет поддерживать различные методы вывода, в том числе PDF, HTML-код и слово:
вот простой пример:
---
output: pdf_document: default
---
```{r}
knitr::kable(data.frame(char = c('*a*','**b**','~~c~~'),
num = c(1,2,3)))
```
применение форматирования с помощью функции
чтобы упростить выбор ячеек для переформатирования, я собрал следующую функцию format_cells
.
format_cells <- function(df, rows ,cols, value = c("italics", "bold", "strikethrough")){
# select the correct markup
map <- setNames(c("*", "*", "~~"), c("italics", "bold", "strikethrough"))
markup <- map[value]
for (r in rows){
for(c in cols){
# Make sure values are not factors
df[[c]] <- as.character( df[[c]])
# Update formatting
df[r, c] <- paste0(markup, df[r, c], markup)
}
}
return(df)
}
он позволяет пользователю выбрать строку ячейки и столбцы, которые необходимо переформатировать и выбрать стиль для применения. Несколько ячеек можно выбрать одновременно, если необходимо переформатировать несколько значений в строке/столбце. Вот пример:
library(tidyverse)
df <- data.frame(char = c('a','b','c'),
num = c(1,2,3))
df %>%
format_cells(1, 1, "italics") %>%
format_cells(2, 2, "bold") %>%
format_cells(3, 1:2, "strikethrough") %>%
knitr::kable()
Читайте Далее: the
kableExtra
пакет был написан, чтобы предложить много дополнительных элементов управления стилем таблиц. Тем не менее, советы различны для разных типов вывода, и поэтому существуют разные подходы для HTML-код и латекс