颜色编码摆动仅部分起作用
Color Coding Sweave Only Partially Working
我仍在努力 this question。我知道了,所以它为正确的单元格提供了红色背景,但没有为其他单元格提供绿色背景。
注意:我只用了sweave,没有用knitr。
这是我的代码:
<<>>=
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,
sanitize.colnames.function = Hmisc::latexTranslate)
@
一些可能有所贡献的事情:
这很微妙,我什至在前面的问题中也没有注意到。在您的 color_cells
函数中,您将一个字符串分配给 out
,但您没有返回 out
的值。您应该使用以下两种方式之一编写您的函数:
color_cells <- function(df, var){
ifelse(df[, var]=="",
paste0("\cellcolor[HTML]{2DB200}{", df[, var], "}"),
paste0("\cellcolor[HTML]{FF0600}{", df[, var], "}"))
}
或
color_cells <- function(df, var){
out <- ifelse(df[, var]=="",
paste0("\cellcolor[HTML]{2DB200}{", df[, var], "}"),
paste0("\cellcolor[HTML]{FF0600}{", df[, var], "}"))
out
}
另一个可能有影响的问题(尽管在这种情况下我不完全确定)是您的列是否有任何 NA
值。观察如果值是 NA
会发生什么:逻辑比较没有解决并且 returns NA
没有应用任何颜色。
> ifelse(NA == "", "red", "green")
[1] NA
您可以用
之类的东西修改您的 cell_colors function to handle the
NA`
color_cells <- function(df, var){
df[, var][is.na(df[, var])] <- ""
ifelse(df[, var]=="",
paste0("\cellcolor[HTML]{2DB200}{", df[, var], "}"),
paste0("\cellcolor[HTML]{FF0600}{", df[, var], "}"))
}
我仍在努力 this question。我知道了,所以它为正确的单元格提供了红色背景,但没有为其他单元格提供绿色背景。
注意:我只用了sweave,没有用knitr。
这是我的代码:
<<>>=
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,
sanitize.colnames.function = Hmisc::latexTranslate)
@
一些可能有所贡献的事情:
这很微妙,我什至在前面的问题中也没有注意到。在您的 color_cells
函数中,您将一个字符串分配给 out
,但您没有返回 out
的值。您应该使用以下两种方式之一编写您的函数:
color_cells <- function(df, var){
ifelse(df[, var]=="",
paste0("\cellcolor[HTML]{2DB200}{", df[, var], "}"),
paste0("\cellcolor[HTML]{FF0600}{", df[, var], "}"))
}
或
color_cells <- function(df, var){
out <- ifelse(df[, var]=="",
paste0("\cellcolor[HTML]{2DB200}{", df[, var], "}"),
paste0("\cellcolor[HTML]{FF0600}{", df[, var], "}"))
out
}
另一个可能有影响的问题(尽管在这种情况下我不完全确定)是您的列是否有任何 NA
值。观察如果值是 NA
会发生什么:逻辑比较没有解决并且 returns NA
没有应用任何颜色。
> ifelse(NA == "", "red", "green")
[1] NA
您可以用
之类的东西修改您的cell_colors function to handle the
NA`
color_cells <- function(df, var){
df[, var][is.na(df[, var])] <- ""
ifelse(df[, var]=="",
paste0("\cellcolor[HTML]{2DB200}{", df[, var], "}"),
paste0("\cellcolor[HTML]{FF0600}{", df[, var], "}"))
}