Ich kann eine Datentabelle in glänzend erstellen, die Daten für jeden einzelnen Büffel zeigt, aber ich kann nicht herausfinden, wie alle Buffalo-Daten zur gleichen Zeit angezeigt werden. Jede Hilfe wird geschätzt.Shiny Datentabelle zeigt alle Daten mit Filter
Beispieldaten:
cleanbuffalo <- data.frame(name = c("queen","toni","pepper"), longitude = c(31.8,32,33), latitude = c(-24,-25,-26))
Shiny UI:
shinyUI(navbarPage("Buffalo Migration", id ="nav",
tabPanel("Data",
fluidRow(
column(3,
selectInput("allnamesbuffalo", "Buffalo", c("All Buffalo" = "all buffalo", vars))
)
),
hr(),
DT::dataTableOutput("buffalotable")
)
)
)
Shiny Server:
shinyServer(function(input, output, session) {
observe({
allnamesbuffalo <- if (is.null(input$allnamesbuffalo)) character(0) else {
filter(cleanbuffalo, name %in% input$allnamesbuffalo) %>%
`$`('name') %>%
unique() %>%
sort()
}
})
output$buffalotable <- DT::renderDataTable({
df <- cleanbuffalo %>%
filter(
cleanbuffalo$name == input$allnamesbuffalo,
is.null(input$allnamesbuffalo) | name %in% cleanbuffalo$name
)
action <- DT::dataTableAjax(session,df)
DT::datatable(df, options = list(ajax = list(url = action)),
escape = FALSE)
})
})
Die Idee ist, dass, wenn der Benutzer 'all buffalo' auswählt, die Namensvariable eine Liste aller Büffelnamen enthalten sollte, ansonsten enthält sie nur diesen spezifischen Buffalo-Namen. Sie können die Variable 'names' mit if/else vor dem Filter berechnen. –
Würde es Ihnen etwas ausmachen, etwas genauer zu sein? Ich denke, dass ich den Namensvariablenupdate basierend auf Benutzerauswahl mit If/Else haben muss. Wenn ich jedoch versuche, die Namensvariable so zu ändern, dass alle Buffalo-Namen in der Auswahl für alle Büffel enthalten sind, erhalte ich Fehler. Danke für Ihre Hilfe. – josh453