Поскольку воспроизводимый пример не был предоставлен, я буду использовать набор данных mtcars
для демонстрации рабочего примера:
library(shiny)
library(dplyr)
ui <-fluidPage(
tabPanel(
"Find My AVF",
headerPanel("What Your AVF Match?"),
radioButtons(inputId = "q1",
label = h3("How many people are in your household?"),
choices = list(
"1 to 2" = 1,
"3 to 5" = 2,
"6 to 7" = 3,
"8" = 4,
"9 or more" = 5
),
selected = 1),
actionButton("execute", label = "Find my Perfect Car!"),
tableOutput("resulttable")
))
server <- function(input,output){
q1a <- reactive({
if (input$q1 == 1){
q1dat <- mtcars %>%
filter(cyl < 6)
} else if (input$q1 == 2) {
q1dat <- mtcars %>%
filter(cyl > 2 & cyl < 6)
} else if (input$q1 == 3) {
q1dat <- mtcars %>%
filter(cyl > 5 )
} else if (input$q1 == 4){
q1dat <- mtcars %>%
filter(cyl > 7 )
} else if (input$q1 == 5) {
q1dat <- mtcars %>%
filter(cyl == 9)
}
return(q1dat)
})
observeEvent(input$execute, {
output$resulttable <- renderTable(q1a())
})
}
shinyApp(ui, server)
Некоторые проблемы не позволяют вашему приложению работать должным образом.Ваш пример трактует Seats
как набор данных, где я предполагаю, что это переменная в другом наборе данных, которая заменяется на mtcars
и на переменную cyl
из этого примера.Вы должны поднастроить свой набор данных, используя соответствующее условие.Ваша реактивная функция q1a
также не возвращает значение при вызове, разрешается с помощью return(q1dat)
после ваших управляющих операторов.
Ваш вход с идентификатором q1
может быть проверен с помощью:
radioButtons(inputId = "q1",
label = h3("How many people are in your household?"),
choices = list(
"1 to 2" = 1,
"3 to 5" = 2,
"6 to 7" = 3,
"8" = 4,
"9 or more" = 5
),
selected = 1)
Вы увидите, что value
каждой кнопки представляет собой число от 1 до 5. Это значение, которое необходимо проверить в своих управляющих операторах.
Наконец, для Shiny: что такоеразница между наблюдаемыми событиями и событиями? , вам нужно наблюдать событие actionButton()
с observeEvent()
вместо eventReactive()
.