Как выделить курсивом текст в выбранных строках в одном столбце таблицы с помощью kable?

Я пытаюсь создать отчет в формате LaTeX, используя R. Формат файла - .Rnw. Я готовлю таблицу, используя пакеты kable и kableExtra, но у меня есть только одна проблема.

Вот скриншот таблицы, которую я сделал:

таблица в кабеле

Я хотел выделить два вида (в строках 1 и 2 столбца 1) курсивом. Как это сделать?

Спасибо.

Вот данные:

df1 <- data.frame(`Species Name` = c("Encrasicholina punctifer", "Stolephorus indicus", "Others", "Total"),
                  `2014` = c(171.12, 0, 0.59, 171.72),
                  `2015` = c(231.18, 3.07, 0.29, 234.55),
                  `2016` = c(412.1, 0, 0.44, 412.54),
                  Total = c(814.4, 3.07, 1.33, 818.8),
                  Percent = c(99.46, 0.38, 0.16, 100))

Кстати, вот код R:

\begin{table}[H]
\centering
<<table_2>>=
df1 %>% 
  kable(format = "latex", 
        booktabs = T) %>%
  kable_styling(latex_options = c("HOLD_position"),
                position = "center",
                font_size = 9) %>% 
  row_spec(0, bold = T) %>% 
  row_spec(4, bold = T)
@
\end{table}

person D. Braed    schedule 04.04.2018    source источник
comment
Почему вы используете файлы .Rnw? Файлы RMarkdown .Rmd в значительной степени были заменены на них.   -  person Michael Harper    schedule 04.04.2018
comment
Я пробовал .Rmd, но мне трудно настроить двухколоночную раскладку. В .Rnw это просто (я так думаю), так как я могу использовать шаблон LaTeX. Вот почему я использовал .Rnw для составления отчета, так как моему руководителю нужен макет из двух столбцов, как в академических статьях.   -  person D. Braed    schedule 04.04.2018
comment
RMarkdown можно полностью настроить с помощью команд LaTeX. Здесь можно легко получить два столбца: stackoverflow.com/questions/34808612/. Поверьте, преимущества RMarkdown определенно того стоят :)   -  person Michael Harper    schedule 04.04.2018


Ответы (1)


kableExtra поставляется с функцией cell_spec, которую можно использовать чтобы придать столу дополнительный стиль. Однако, по сравнению с kable_styling, это нужно использовать до вызова функции kable. Это объясняется в руководстве здесь: https://haozhu233.github.io/kableExtra/awesome_table_in_pdf.pdf

Однако, если вы хотите отредактировать только несколько отдельных ячеек, я считаю, что лучше просто переформатировать данные вручную. Как видно из этого аналогичного вопроса , вы можете изменить имя ячейки на \textit{YOUR STRING}*, чтобы слова были выделены курсивом.

Мне не удалось заставить ваш файл Rnw работать, поэтому вот полностью воспроизводимый файл Rmarkdown .Rmd. Единственное отличие от файла .Rnw в принципе состоит в том, что вам нужно добавить двойную обратную косую черту к форматированию команды LaTeX, чтобы убедиться, что они читаются pandoc (т.е. \\textit{}):

---
output: pdf_document
---

```{r}
df1 <- data.frame(`Species Name` = c("Encrasicholina punctifer", "\\textit{Stolephorus indicus}", "*Others*", "\\textbf{Total}"),
                  `2014` = c(171.12, 0, 0.59, 171.72),
                  `2015` = c(231.18, 3.07, 0.29, 234.55),
                  `2016` = c(412.1, 0, 0.44, 412.54),
                  Total = c(814.4, 3.07, 1.33, 818.8),
                  Percent = c(99.46, 0.38, 0.16, 100))
```


```{r}
knitr::kable(df1)
```

введите здесь описание изображения

Примечание: я бы рекомендовал использовать RMarkdown вместо .Rnw. Вы можете полностью настроить шаблон LaTeX так же, как и с файлом Rnw, и он гораздо больше поддерживается. Автор сбросил Sweave более 5 лет назад: https://yihui.name/knitr/demo/sweave/

person Michael Harper    schedule 04.04.2018
comment
Спасибо. Попробую перенести на .Rmd. Но другой вопрос. Что, если фрейм данных является результатом манипулирования данными (с использованием dplyr)? - person D. Braed; 05.04.2018
comment
Здесь вы можете увидеть еще один аналогичный ответ, в котором используется функция для простого переформатирования необходимых ячеек: stackoverflow.com/a/49656650/7347699 - person Michael Harper; 05.04.2018
comment
Спасибо еще раз. Мне действительно трудно заставить его работать в .Rmd, так как я не эксперт, особенно в создании шаблона LaTeX для Rmarkdown. - person D. Braed; 06.04.2018