2016-07-31 35 views
0

这是一个示例,显示如何选择列(第3列),突出显示大于100的值,并以某种方式突出显示大于200的值。renderDataTable颜色预先选择的行

library("shiny") 
library("shinydashboard") 
library("datasets") 
library("DT") 

header <- dashboardHeader() 

sidebar <- dashboardSidebar() 

body <- dashboardBody(
    DT::dataTableOutput("mtcarsTable") 
) 

shinyApp(
    ui = dashboardPage(header, sidebar, body), 
    server = function(input, output) { 

    output$mtcarsTable <- renderDataTable({ 
     DT::datatable(datasets::mtcars, 
        options = list(rowCallback = JS(' 
                function(nRow, aData, iDisplayIndex, iDisplayIndexFull) { 
                // Bold and green cells for conditions 
                if (parseFloat(aData[3]) >= 200) 
                $("td:eq(3)", nRow).css("font-weight", "bold"); 
                if (parseFloat(aData[3]) >= 100) 
                $("td:eq(3)", nRow).css("background-color", "#9BF59B"); 
                }') 
        ) 
        ) 
    }) 
    } 
        ) 

我只是在寻找一种方法来选择行而不是列。例如,选择第3,9,11和13行,并将这些行着色为黄色。对于如何修改上面的代码来完成这一任何帮助非常感谢。提前致谢。

+0

它看起来像'aData'是一个数据帧。 你有什么理由不能参考'aData [c(3,9,11,13),]'? – Warner

+0

@Warner,你是对的''aData'是一个数据框,我做了你的建议,我没有看到任何输出,也没有看到任何错误,我怀疑我将不得不改变下一行,'$( “td:eq(3)”,nRow).....'但不知道如何? – Science11

+0

@ Science11,看看我的例子http://stackoverflow.com/questions/38565033/use-backgroundcolor-in-dt-package-to-change-a-complete-row-instead-of-a-single- v/38565223#38565223 –

回答

0

不知道这是你在找什么,但下面的代码将在黄色的所有行强调这里的“DISP”的值(ADATA [3])列是大于200

'function(nRow, aData, iDisplayIndex, iDisplayIndexFull) { 
if (parseFloat(aData[3]) >= 200) 
$(nRow).css("background-color", "#ffff00"); 
}' 

只需将其插入rowCallback部分即可。

另外,

编辑代码才能删除列数:

$("td", nRow).css("background-color", "#9BF59B");