#r #shiny
Вопрос:
Как observe
ведет if
себя оператор in или в observeEvent
?
Является ли он автономным от if
или observeEvent
?
В следующем коде observe
не активируется dummy
кнопкой, если go
кнопка не вызывает удовлетворенное if
условие, а затем dummy
кнопка всегда срабатывает observe
.
shiny::reactiveConsole(T)
library(shiny)
ui <- fluidPage(
selectInput(
inputId = "select1",
label = "select1" ,
choices = c("True" = T, "False" = F) ,
selected = "T",
multiple = F
),
selectInput(
inputId = "select2",
label = "select2" ,
choices = c("True" = T, "False" = F) ,
selected = "T",
multiple = F
),
selectInput(
inputId = "select3",
label = "select" ,
choices = c("True" = T, "False" = F) ,
selected = "T",
multiple = F
),
actionButton(inputId = "go" ,
label = "Go"),
actionButton(inputId = "dummy" ,
label = "dummy")
)
server <- function(input, output, session) {
observeEvent(eventExpr = input$go ,
handlerExpr = {
inputs = reactiveValuesToList(input)
select_input = inputs[startsWith(names(inputs), "select") amp;
grepl(".*[0-9]$",
names(inputs))]
if (sum((select_input == "TRUE")) >= 2) {
observe({
input$dummy
print(select_input)
})
} else{
print("nothing")
}
})
}
shinyApp(ui, server)
Комментарии:
1.
if
Утверждение здесь является отвлекающим маневром, проблема в том, что вы не можете вложить реактивный блок, как вobserveEvent(..., { observe(...); })
.2. Основываясь на этом коде, замените свой внутренний
observe(...)
на простоprint(select_input)
(нетobserve
), возможно, это даст желаемые результаты. (Я не знаю , с чем вам нужно, чтобы это произошло, это полный отказ.)observe({input$dummy})