J'ai une table de données et je veux laisser l'utilisateur choisir deux lignes seulement de cette table, et de ces deux ligne je veux obtenir les information dans les cellules (deux information par ligne), je utilise pour ça la library DT et shinyjs,
Code : Tout sélectionner
library(shiny)
library(DT)
library(shinyjs)
ui = (fluidPage(
title = 'Select Table Rows',
h1('A Server-side Table'),
fluidRow(
column(8, DT::dataTableOutput('x3')),
column(4,
verbatimTextOutput('firstLineMpg'),
verbatimTextOutput('firstLineDrat'),
verbatimTextOutput('secondLineMpg'),
verbatimTextOutput('secondLineDrat'))
)
))
server= function(input, output, session) {
mtcars2 = mtcars[, 1:8]
output$x3 = DT::renderDataTable(mtcars2,
filter = 'top', rownames = FALSE,
options = list(pageLength = 10, lengthMenu=c(10, 30, 50)),
callback = JS(
"table.on('click.dt', 'tr', function() { $(this).css('background- color', 'lightblue');
Shiny.onInputChange('firstMpg',
table.rows('.selected').data()[0][0]);
Shiny.onInputChange('firstDrat',
table.rows('.selected').data()[0][4]);
Shiny.onInputChange('secondMpg',
table.rows('.selected').data()[0][0]);
Shiny.onInputChange('secondDrat',
table.rows('.selected').data()[0][4]);
});")
)
# print the selected indices
output$firstLineMpg = renderPrint({ })
output$firstLineDrat = renderPrint({ })
output$secondLineMpg = renderPrint({ })
output$secondLineDrat = renderPrint({ })
}
shinyApp(ui = ui, server = server)
Si vous avez une idée comment je peux faire ça même sans le shinyjs, j'ai essayé avec l'exemple de :https://yihui.shinyapps.io/DT-rows/ mais j'arrive pas à l'adapter à mon cas
Merci
Alex