Как изменить шрифт (жирный / курсив) для ячейки в таблице 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)))
```

enter image description here

применение форматирования с помощью функции

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