我正在使用renderTable创建一个表,但表中的HTML不呈现:
这是感兴趣的代码片段:
if (is.null(Compare_Count) || is.na(Compare_Count) || length(Compare_Count) == 0L ) {
CT_Table[i, 3] <- HTML("<i class='icon-arrow-up'></i>")
} else if (CT_Table[i, 2] > Compare_Count) {
CT_Table[i, 3] <- print(tags$i(class='icon-arrow-up', style="text-color: green"), quote = FALSE)
}
HTML
,paste
或c
都无效。
我怎样才能显示箭头?
谢谢!
server.r
:[注意,这是一个例子。代码不完整,括号可能不匹配等。对问题不重要。]
output$example <- renderTable(include.rownames=FALSE,{
CT_Table <- count(Canidates,vars=c("Name"))
CT_Table <- CT_Table[order(CT_Table["Recent Reviews: "], decreasing=T),]
for (i in 1:nrow(CT_Table)) {
Compare_Name <- paste(CT_Table$Product[i])
Compare_Count <- Can_trend[Can_trend$Name == Compare_Name, 2]
if (is.null(Compare_Count) || is.na(Compare_Count) || length(Compare_Count) == 0L )
{
CT_Table[i, 3] <- HTML("<i class='icon-arrow-up'></i>")
} else if (CT_Table[i, 2] > Compare_Count) {
CT_Table[i, 3] <- tags$i(class='icon-arrow-up', style="text-color: green")
} else if (CT_Table[i, 2] < Compare_Count) {
CT_Table[i, 3] <- tags$i(class='icon-arrow-down', style="text-color: red")
} else if (CT_Table[i, 2] == Compare_Count) {
CT_Table[i, 3] <- tags$i(class='icon-minus', style="text-color: yellow")
}
}
}
CT_Table
})
ui.r
只是对tableOutput
或htmlOutput
的简单调用,但都不会将html粘贴到列中。
答案 0 :(得分:13)
这已通过sanitize.text.function = function(x) x
修正;
需要像这样包括:
output$example <- renderTable({
table <- someTable_Data_here
table
}, sanitize.text.function = function(x) x)
这是要点here
另外,请注意,
我注意到您可以在xtable
函数内调用renderTable
,它会正确呈现表格。
但您应该注意,传递给xtable
的选项无效!相反,您需要将这些选项传递给'renderTable'函数。
所以如果你想这个叫:
output$example <- renderTable({
table <- someTable_Data_here
xtable(table, align=c("llr"))
}, sanitize.text.function = function(x) x)
您需要做的是:
output$example <- renderTable({
table <- someTable_Data_here
table
},align=c("llr"), sanitize.text.function = function(x) x)
RStudio团队和RShiny团队非常棒。我确信还有大量的文档仍在编写中,我希望这能帮到某些人。