首页 文章

闪亮的renderUI selectInput返回NULL

提问于
浏览
4

我试图使用反应模型,其中一个输入影响几个输出,如闪亮的备忘单中所述 . 我需要使用renderUI,因为选项列表是动态呈现的(示例中未显示)但是,在初始化期间,selectInput返回NULL而不是默认值 . 在第一个NULL值之后,输入按预期工作 . 我是新手,可能会做错事 .

更新:其他控件意外返回不仅NULL,而且初始化后也返回NA .

见下面的代码 . 查看控制台输出,第一个输入返回NULL .

Listening on http://127.0.0.1:6211
 NULL
 chr "1"
 chr "2"
 chr "1"




library(shiny)

runApp(list(

  ui = bootstrapPage(
    fluidPage( uiOutput('ui.A')   )
  ),


  server = function(input, output){

    output$ui.A = renderUI({
      selectInput("A", label = h4("input A"), 
                  choices = list(A_1=1, A_2=2), 
                  selected = 1)
    })

    A.r <- reactive({input$A })

    observe({ 

      A <- A.r()
      str(A)

    })

  }))

2 回答

  • 1

    如果您使用is.null()并返回输入$ A的“默认值”,这可能会有效:

    A.r <- reactive({
       if(is.null(input$A)) return (1)
    
       input$A 
    
    })
    
  • 4

    Shiny有一个名为 observeEvent 的函数,我几乎总是使用它来代替 observer . 它基本上仅在无功值更改时运行一些代码,并且默认情况下它忽略NULL值 . 所以这里是让你的例子工作的代码(我所要做的就是将你的 observe({ 行更改为 observeEvent(A.r(), {

    library(shiny)
    
    runApp(list(
    
      ui = bootstrapPage(
        fluidPage( uiOutput('ui.A')   )
      ),
    
    
      server = function(input, output){
    
        output$ui.A = renderUI({
          selectInput("A", label = h4("input A"), 
                      choices = list(A_1=1, A_2=2), 
                      selected = 1)
        })
    
        A.r <- reactive({input$A })
    
        observeEvent(A.r(), { 
    
          A <- A.r()
          str(A)
    
        })
    
      }))
    

相关问题