尝试着色代码Sweave xtable时出错

时间:2016-05-31 18:03:19

标签: r latex sweave

我正在尝试使用R和Sweave对表格进行颜色编码,如this question中所述。我有以下代码:

<<>>=
Overall <- data$FLAG_OVERALL_HOSP
DC_Info <- data$FLAG_DC_INFO
Care_Trans <- data$FLAG_CARE_TRANS
Dept <- data$DEPT_DSC
HOSP <- data$ALPHA_CODE
Flag <- data.frame(HOSP,Dept, Overall, DC_Info, Care_Trans)
@
<<results=tex>>=
color_cells <- function(df, var){
 out <- ifelse(df[, var]=="", 
                  paste0("\\cellcolor[HTML]{2DB200}{", df[, var], "}"),
                  paste0("\\cellcolor[HTML]{FF0600}{", df[, var], "}"))
}
Flag$Overall <- color_cells(df = Flag, var= "Overall")
Flag$DC_Info <- color_cells(df = Flag, var= "DC_Info")
Flag$Care_Trans <- color_cells(df = Flag, var= "Care_Trans")
@

<<results=tex>>=
Flagx <- xtable(Flag)
align(Flagx) <- "|c|l|l|c|c|c|"
print(Flagx[1:40,], hline.after=c(-1:40), sanitize.text.function=identity)
@
<<results=tex>>=
Flagx <- xtable(Flag)
align(Flagx) <- "|c|l|l|c|c|c|"
print(Flagx[41:62,], hline.after=c(-1:22), sanitize.text.function=identity)
@

但我收到以下消息:

Error Message I'm getting

我在这里做错了什么?

修改:这是我数据的一小部分

ALPHA_CODE <- c(AF, DX, DX)
Dept <- c(MSN, ICU, PEDS)
OVERALL<- c(NA,NA,1)
DC_Info <- c(NA,NA,NA)
Care_Trans <- c(1,NA,NA)
Flag <- data.frame(HOSP,Dept, Overall, DC_Info, Care_Trans)

1 个答案:

答案 0 :(得分:2)

现在,我在计算机上看到了这个问题。您的列名称中包含下划线,LaTeX假定您的意思是对一个字符进行子集化,而这只会在数学模式下起作用。 (即$个字符之间)。

根据我的经验,当我得到&#34; Missing $ inserted&#34;错误,这意味着

  1. 我没有将我的输出解释为LaTeX(results = tex通常是我已经忘记的。或
  2. 我未能逃脱假定处于数学模式的特殊字符(例如$_和其他字符。这些文件中有一个很好的列表Hmisc::latexTranslate
  3. 您的案例中的解决方案是清理列名称。

    print(Flagx[41:62,], 
        hline.after=c(-1:22), 
        sanitize.text.function=identity,
        sanitize.colnames.function = Hmisc::latexTranslate)