尝试颜色代码 Sweave xtable 时出错
Error Attempting to Color Code Sweave xtable
我正在尝试使用 R 和 Sweave 对 table 进行颜色编码,如 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)
@
但我收到以下消息:
我做错了什么?
编辑:这是我的一小部分数据
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)
现在我在电脑前看到了问题。您的列名中有下划线,LaTeX 假定您的意思是对一个字符进行子集化,而这往往只适用于数学模式。 (即,在 $
个字符之间)。
根据我的经验,当我收到 "Missing $ inserted" 错误时,这意味着
- 我没有将我的输出解释为 LaTeX(
results = tex
通常是我忘记的内容。或者
- 我未能转义假定处于数学模式的特殊字符(例如
$
、_
等。这些的一个很好的列表在文档中Hmisc::latexTranslate
.
您的解决方案是清理您的列名。
print(Flagx[41:62,],
hline.after=c(-1:22),
sanitize.text.function=identity,
sanitize.colnames.function = Hmisc::latexTranslate)
我正在尝试使用 R 和 Sweave 对 table 进行颜色编码,如 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)
@
但我收到以下消息:
我做错了什么?
编辑:这是我的一小部分数据
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)
现在我在电脑前看到了问题。您的列名中有下划线,LaTeX 假定您的意思是对一个字符进行子集化,而这往往只适用于数学模式。 (即,在 $
个字符之间)。
根据我的经验,当我收到 "Missing $ inserted" 错误时,这意味着
- 我没有将我的输出解释为 LaTeX(
results = tex
通常是我忘记的内容。或者 - 我未能转义假定处于数学模式的特殊字符(例如
$
、_
等。这些的一个很好的列表在文档中Hmisc::latexTranslate
.
您的解决方案是清理您的列名。
print(Flagx[41:62,],
hline.after=c(-1:22),
sanitize.text.function=identity,
sanitize.colnames.function = Hmisc::latexTranslate)