Отступ строки с помощью add_indent () во 2-м столбце в kableExtra - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь сделать отступ в ячейках 2-го столбца кадра данных, используя kableExtra-package для RMarkdown.Кажется, add_indent() работает только для первого столбца, поэтому ничего не меняет в моей таблице представленных ниже:

Представление с фиктивными данными:

---
output: pdf_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)

library(tidyverse)
library(kableExtra)


group <- c(1, NA, NA, 2, NA, NA)
quest <- c("How is your mood today?", "good or very good", "bad or very bad", 
           "What colour is your hair?", "brown", "other")
percent <- c(NA, 80, 20, NA, 50, 50)


df <- tibble(group, quest, percent)


```

## Reprex

```{r, echo=TRUE}
# output without add_indent()
kable(df, booktabs = T, escape = T) %>% 
  add_header_above(header = c("Group" = 1, 
                              "Question & answer options" = 1, 
                              " %Agreement" = 1)) %>% 
  gsub("NA", " ", .)
```


```{r with indent, echo=TRUE}
# output with add_indent()
kable(df, booktabs = T, escape = T) %>% 
  add_header_above(header = c("Group" = 1, 
                              "Question & answer options" = 1, 
                              " %Agreement" = 1)) %>% 
  gsub("NA", " ", .) %>% 
  add_indent(positions = c(2,3,5,6))

Желаемый вывод: я бынапример, для отступов в строках 2, 3, 5, 6 2-го столбца (варианты ответов предназначены для вопросов ниже, а в идеале также курсив ).Курсив также может быть покрыт cell_spec(), но я думаю, что это работает только по столбцам.

Возможен ли мой желаемый результат?(Я думаю, что нет смысла смешивать вопросы и варианты ответов, но чтобы сохранить формат более раннего отчета, мы хотели бы попробовать это таким образом?)

1 Ответ

0 голосов
/ 27 февраля 2019

Вот два возможных способа.

  1. Использовать kableExtra::group_rows вместо дополнительного столбца group.

  2. Добавить отступ (kableExtra добавляет 1em) вручную, используя cell_spec.

Опция 1

```{r, echo = F}
df <- data.frame(quest, percent) 
df %>%
  mutate(quest = cell_spec(quest, italic = ifelse(row_number() %in% c(2,3,5,6), T, F))) %>%
  kable(booktabs = T, escape = F) %>%
  add_indent(c(c(2,3,5,6))) %>% 
  group_rows("Group 1", 1, 3) %>%
  group_rows("Group 2", 4, 6) %>%
  gsub("NA", " ", .)
```

## Option 2

```{r, echo = F}
df <- data.frame(group, quest, percent)
df %>%
  mutate(quest = cell_spec(quest, italic = ifelse(row_number() %in% c(2,3,5,6), T, F)),
         quest = ifelse(row_number() %in% c(2,3,5,6), paste0("\\hspace{1em}", quest), quest)) %>%
  kable(booktabs = T, escape = F) %>%
  gsub("NA", " ", .)
``` 

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...