Shiny: obtenir les données de deux lignes sélectionnées dans DT table

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

alex hassan
Messages : 81
Enregistré le : 02 Oct 2012, 11:25

Shiny: obtenir les données de deux lignes sélectionnées dans DT table

Messagepar alex hassan » 26 Nov 2015, 16:23

Bonjour,

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

Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité