有光泽的selectInput不响应取消选择所有元素

时间:2016-11-02 10:57:44

标签: r shiny

如何观察取消选择selectInputshiny的所有元素?

例如

library(shiny)

ui=shinyUI(fluidPage(
  selectInput("select","",choices = c(1,2),multiple = T)
  ))

server=function(input, output,session) {
  observeEvent(input$select,{
    print(input$select)
  })

}

shinyApp(ui,server)

行动:

1)选择1

2)选择2

3)取消选择2

4)取消选择1

控制台日志:

[1] "1"
[1] "1" "2"
[1] "1"

所有取消选择时都没有打印。

这是错误还是我做错了什么?

1 个答案:

答案 0 :(得分:3)

observeEvent对NULL没有反应。这在大多数情况下都很有用,请参阅此question,@ daattali的答案。

您有两种选择,1)使用观察

library(shiny)

ui=shinyUI(fluidPage(
  selectInput("select","",choices = c(1,2),multiple = T)
  ))

server=function(input, output,session) {
  observe({
    print(input$select)
  })

}

shinyApp(ui,server)

2)在observeEvent()中将ignoreNULL参数设置为FALSE,如@WeihuangWong

所示
library(shiny)

ui=shinyUI(fluidPage(
  selectInput("select","",choices = c(1,2),multiple = T)
))

server=function(input, output,session) {
  observeEvent(input$select,{
    print(input$select)
  }, ignoreNULL = FALSE) 
}

shinyApp(ui,server)