2017-04-19 3 views
0

Ich habe eine glänzende App, die derzeit funktioniert, und ich möchte die Option lengthMenu in der Datentabelle hinzufügen. Es scheint, dass es nicht funktioniert. Ich bin mir nicht sicher, ob ich es im R-Code an die falsche Stelle setze. Danke, dass du dir das angeschaut hast.lengthMenu Option funktioniert nicht in DataTable

Hier ist mein Code:

output$sbirx.view <- DT::renderDataTable(
{ 
    input$submit1 
    if (input$submit1==0) return() 
    isolate({ 
    datatable(dataset.filter(), 
       rownames=FALSE, 
       extensions = c("FixedColumns", "FixedHeader", "Scroller"), 
       options = list(searching=TRUE, 
          autoWidth=TRUE, 
          scroller=TRUE, 
          scrollX=TRUE, 
          #scrollY="500px", 
          scrollY=paste0(factor*nrow(dataset.filter()),"px"), 
          fixedHeader=TRUE, 
          class='cell-border stripe', 
          lengthMenu = c(5, 30, 50), pageLength = 5, 

fixedColumns=list(leftColumns=2,heightMatch='none') 
          ) 
      ) 
    }) 

}) 
+0

sieht für mich wie die Kombination aus Scroller und LengthMenu. Warum würdest du beides zusammen benutzen? "Scroller ist ein virtuelles Rendering-Plug-in für DataTables, mit dem große Datensätze sehr schnell auf dem Bildschirm gezeichnet werden können." Haben Sie ein großes Dataset, das schnell gezeichnet werden kann, oder möchten Sie die Ansicht auf 5/30/50 obs beschränken? Wenn Sie den Scroller-Parameter entfernen, sollte es gut funktionieren, ... – BigDataScientist

+0

Vielen Dank für die Untersuchung. Ja, ich habe einen großen Datensatz, den ich auch auf die Ansicht beschränken möchte, um den Bildschirm vertikal und horizontal zu scrollen. Wenn ich eine kleinere Anzahl von Beobachtungen habe, ist am unteren Bildschirmrand viel Platz, weil ich mein scrollY = "500px" definiert habe. Gibt es eine automatische Möglichkeit, den Bildschirm abhängig von der Anzahl der Beobachtungen anzuzeigen? Danke und einen schönen Tag! – aotearoa

+0

natürlich können Sie Ihre Optionen dynamisch machen. Z.B. setze 'scrollY = paste0 (Faktor * nrow (Dataset.Filter())," px ") und wähle dementsprechend' factor'. Aber sind Sie sicher, dass Sie sowohl 'scroller' als auch' lengthMenu' brauchen? – BigDataScientist

Antwort

0

Nach Ihre Kommentare dies könnte Ihnen helfen: Der Faktor Sie ich denke, nach Ihren Bedürfnissen zu wählen.

shinyApp(
    ui = fluidPage(
    fluidRow(
     column(12, 
      dataTableOutput('table') 
    ) 
    ) 
), 
    server = function(input, output) { 
    output$table <- renderDataTable(iris, 
            rownames=FALSE, 
            extensions = c("FixedColumns", "FixedHeader", "Scroller"), 
            options = list(searching=TRUE, 
                # autoWidth=TRUE, 
                scroller=TRUE, 
                scrollX=TRUE, 
                scrollY=paste0(4*nrow(iris),"px"), 
                fixedHeader=TRUE, 
                class='cell-border stripe', 
                fixedColumns=list(leftColumns=2,heightMatch='none') 
            ) 
    ) 
    } 
) 
Verwandte Themen