Ich verwende dplyr in einer Shiny App reaktive Funktion. Ich habe ein interaktives Widget in der Benutzeroberfläche, mit dem Benutzer den Status auswählen können. Daten werden basierend auf dem ausgewählten Status angezeigt. Ich möchte jedoch auch die Möglichkeit geben, alles anzuzeigen, was ein Status ist, den ich "Alle" genannt habe.Verwenden Sie dplyr bedingten Filter in reaktive Funktion in Shiny
Ich weiß, wie dies ohne dplyr zu erreichen:
library(tibble)
library(shiny)
# Test Data -----
test_data <- tribble(
~id, ~status,
1, 'active',
2, 'inactive',
3, 'test'
)
# Ui ----
ui = fluidPage(
selectInput("status", "Choose a status:",
choices = list("All","active","inactive","test")
),
tableOutput('result')
)
# Server ----
server = function(input, output) {
table <- reactive({
if(input$status != 'All')
{
test_data <- test_data[test_data$status == input$status,]
} else {
test_data
}
})
output$result <- renderTable(table(), rownames = FALSE)
}
# App ---
shinyApp(ui = ui, server = server)
jedoch, würde ich mit dem Rest meines Codes konsistent sein mögen und verwenden dplyr. Gibt es eine Möglichkeit, etwas wie das Folgende zu tun?
Mit anderen Worten, gibt es eine Möglichkeit, innerhalb der Filterfunktion zu verwenden, um nicht unter einer bestimmten Bedingung zu filtern?
Danke!
Danke. Das erste Beispiel, das Sie gepostet haben, benötigte ein anderes, ansonsten wurde eine leere Tabelle mit der Option "Alle" gedruckt. Ich habe Ihren Beitrag bearbeitet, um das zu berücksichtigen. Ich mag das zweite Beispiel, das Sie gepostet haben. –