Latex 错误:使用kable时缺少插入的$

Latex 错误:使用kable时缺少插入的$,latex,r,r-markdown,pdflatex,kable,Latex,R,R Markdown,Pdflatex,Kable,我正在尝试使用r标记、kable和kableExtra输出一个latex表。我需要使用条件逻辑来使用cell_spec为我的表添加颜色 如果我在kable()中添加escape=false,它会给出以下错误: !!缺少插入的$。 $l.142萼片_ 长度&萼片宽度&花瓣长度&花瓣宽度&物种\以下是您使用的TeX的内存量:14185个字符串 3125261 323511个单词中的492970个208670个字符串 内存超出3000000 17834个多字母控制序列超出 3000000种字体中,有

我正在尝试使用
r标记
kable
kableExtra
输出一个latex表。我需要使用条件逻辑来使用cell_spec为我的表添加颜色

如果我在
kable()
中添加
escape=false
,它会给出以下错误:

!!缺少插入的$。 $l.142萼片_ 长度&萼片宽度&花瓣长度&花瓣宽度&物种\以下是您使用的TeX的内存量:14185个字符串 3125261 323511个单词中的492970个208670个字符串 内存超出3000000 17834个多字母控制序列超出 3000000种字体中,有40种字体的字体信息为15000+200000 23725字 对于8191中的9000 1141断字例外 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")


}


```
---
标题:“Iris数据表”
输出:pdf\U文件
标题包括:\usepackage[table]{xcolor}
几何:边距=1cm
参数:
n:不
数据文件:“//ad.monash.edu/home/User076/vbed0001/Documents/IRIS.csv”#始终设置绝对完整路径
---
```{r,echo=FALSE,message=FALSE}
d%
变异(
萼片长度=细胞规格(萼片长度,格式=“乳胶”,背景=(如果其他(萼片长度>4.5,“#D3D3”,“#ff0000”))
)%>%
kable(format=“latex”,caption=“Setosa Table”)%%>%
kable_样式(position=“center”,bootstrap_options=“bordered”)
}
```

此错误是由于数据帧中有下划线“\u1”造成的。在本例中,列名包含下划线。在TeX中,此符号用于在数学环境中设置下标。这就是为什么在普通文本中使用它时必须转义(
\\
)。删除、转义或替换下划线,例如

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

names(data)在我的例子中,我需要从区块名称中删除下划线

例如,这项工作:

```{r summaryTableBaseline, results='asis', echo=FALSE}
summaryTableBaseline %>%
    kable(col.names = c("Docker Image", "Min", "Mean", "Median", "Max"),
          caption = "Baseline Benchmark") %>%
    kable_styling()
```
但这不起作用:

```{r summary_Table_Baseline, results='asis', echo=FALSE}
summaryTableBaseline %>%
    kable(col.names = c("Docker Image", "Min", "Mean", "Median", "Max"),
          caption = "Baseline Benchmark") %>%
    kable_styling()
```

尝试使用不带下划线的其他列名。例如,使用
gsub(“\\”、“\\\”、名称(数据))
@MartinSchmelzer转换,效果很好。谢谢。我做的一件事是,使用
dplyr::rename_all
我定义了
esc.us%rename_all(esc.us)
。也许有更好的办法,但似乎有效。