2016-05-31 38 views
1

我試圖使用R和Sweave按照this question中所述對錶格進行顏色代碼。我有以下代碼:嘗試顏色代碼Sweave的錯誤xtable

<<>>= 
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) 
+0

每個代碼塊必須'<<>之間> ='和'@',你似乎缺少一個'<<>> =' – rawr

+0

@rawr看到代碼所做的編輯 - 我仍然得到相同的錯誤信息。 –

+0

請問您能否提供能夠爲我們提供[可重現的示例]的數據(http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)? –

回答

2

的一小部分。你的列名在它們中有下劃線,而LaTeX假設你的意思是對一個字符進行子集化,並且這隻能在數學模式下工作。 (即在$個字符之間)。

根據我的經驗,當我拿到「失蹤$插入」的錯誤,這意味着要麼

  1. 我沒有理解我的乳膠輸出(results = tex通常是什麼我忘記了。或者
  2. 我沒能逃脫被認爲是在數學模式(如$_,和其他特殊字符。這些良好的名單是Hmisc::latexTranslate的文檔中。

解決方案在你的情況是清理你的列名。

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

我應該使用上面的確切代碼塊嗎?我試過了,我收到以下消息:'! LaTeX錯誤:找不到文件'Hmisc.sty'。' –

+0

您需要安裝'Hmisc'軟件包('install.packages(「Hmisc」)'),但我從來不需要做任何事情。 – Benjamin

+0

我已經這樣做了,並且正在發生該錯誤。 –