2016-07-31 3 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' является dataframe. Есть ли причина, по которой вы не можете ссылаться на 'aData [c (3,9,11,13),]'? – Warner

+0

@Warner, вы правы 'aData' - это dataframe, я сделал то, что вы предлагали, я не видел никакого вывода и не видел никакой ошибки, я подозреваю, что мне придется изменить и следующую строку:' $ ("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"); 
Смежные вопросы