Ошибка: пропущен $ при использовании kable - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь вывести латексную таблицу, используя r markdown, kable и kableExtra.Мне нужно было использовать условную логику, чтобы добавить цвета в мою таблицу с помощью cell_spec.Но с выводом pdf он показывает код латекса следующим образом:

вывод pdf с кодом латекса

Если я добавлю escape = false в kable(), это даст мнеследующая ошибка,

!Отсутствует $ вставлено.$ l.142 sepal_ length & sepal_width & petal_length & petal_width & Species \ Вот сколько памяти TeX вы использовали: 14185 строк из 492970 208670 строковых символов из 3125261 323511 слов памяти из 3000000 17834 многострочных управляющих последовательностей из 15000+200000 23725 слов информации о шрифте для 40 шрифтов, из 3000000 для 9000 1141 исключений переносов из 8191 41i, 9n, 38p, 1027b, 272s позиций стека из 5000i, 500n, 10000p, 200000b, 50000s

Я новичок в rmarkdown и , пожалуйста, помогите мне решить проблему.Спасибо.

Это мой код файла rmd:

---
title: "Iris Data Table"
output: pdf_document
header-includes: \usepackage [table]{xcolor}
geometry: margin = 1cm
params:
  n: NA
  datafile: "//ad.monash.edu/home/User076/vbed0001/Documents/IRIS.csv" #always set the absolute full path
---

```{r, echo=FALSE, message=FALSE}

d <- read.csv(params$datafile, header = TRUE, sep = ",")

# this uses to remove the warning messages from the pdf file
library(memisc, warn.conflicts = FALSE, quietly=TRUE)

# the package order is important, always kableExtra at the top
#options(kableExtra.latex.load_packages = FALSE)
library(kableExtra)
library(magrittr)
library(formattable)
library(dplyr)
library(knitr) 
library(devtools)


options(knitr.table.format = "latex")

if(params$n == "set"){
dtset <- d %>% filter(Species == "setosa")

dtset <- d %>% filter(Species == "setosa")

dtset %>%
 mutate(
   sepal_length = cell_spec(sepal_length,format = "latex",background = (ifelse(sepal_length>4.5,"#D3D3D3","#ff0000")))

 )%>%
 kable(format = "latex",caption = "Setosa Table")%>%
   kable_styling(position = "center",bootstrap_options = "bordered")


}


```

1 Ответ

0 голосов
/ 05 декабря 2018

Эта ошибка - результат подчеркивания "_" в вашем фрейме данных.В этом случае имена столбцов содержат подчеркивания.В TeX этот символ используется для установки индексов в математических средах.Вот почему он должен быть экранирован (\_) при использовании в обычном тексте.Снимите, удалите или замените подчеркивание, например,

names(data) <- gsub("_", "", names(data))    # remove
names(data) <- gsub("_", "\\_", names(data)) # escape
names(data) <- gsub("_", " ", names(data))   # replace with space
...