2013-09-26 165 views
5

我创建使用renderTable但表内的HTML表格是不是呈现:[R闪亮的表不渲染HTML

table not rendering

这是感兴趣的代码snipit:

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,pastec都没有工作。

我怎样才能让箭头显示?

谢谢!


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仅仅是tableOutputhtmlOutput一个简单的通话,但也使粘贴到列中的HTML。

+0

你能提供最小但完整的'ui.R'和'server.R'文件吗? – juba

+0

我用更完整的代码示例更新了问题;该文件是几千行,所以我试图只粘贴什么必要的。如果我遗漏了任何东西,请让我知道,谢谢! – JayCo

回答

7

这是固定的sanitize.text.function = function(x) x;

它需要包含这样的:

output$example <- renderTable({ 
    table <- someTable_Data_here 
    table 
}, sanitize.text.function = function(x) x) 

这是要点here


也,一张纸条,

我注意到,你可以调用xtablerenderTable函数,它会正确呈现表格。

但是您应该注意,您传递给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家伙是真棒。我相信大量的文档仍然在撰写,我希望这同时可以帮助某人。

+0

对于'renderDataTable',有没有相当于'sanitize.text.function'?谢谢! – harkmug

+0

它看起来不太可能,因为'sanitize.text.function'来自'xtable'包,它自己编写html - 'renderTable'只是传递参数给它。它可能是以'renderDataTable'正确显示它的方式来嵌入html的......但这听起来像是一个新问题! – JayCo

+0

你不需要对'renderDataTable'使用任何文本敏感 - 它会自动呈现html。你应该注意到,目前的实现(2014年11月1日)会按字母顺序排序你的风格化的html,而不会转义html!我已经提交了一个错误报告。 – JayCo