Actionbutton和observeEvent不工作(R闪亮)

时间:2018-01-09 00:52:08

标签: r shiny

有人可以为我检查下面的代码并告诉我出了什么问题吗?

shinyUI(fluidPage(
    sidebarLayout(
    sidebarPanel(
        sliderInput("Mean",
        label="Drag to select the mean of the normal distribution",
        min=0,max=5,value=0),
        actionButton("show","Go")
    ),
    mainPanel(
                h3("The number is"),
                textOutput('number')
    )   
  )
))

shinyServer(function(input, output) {

    #observeEvent(input$show, {
        #output$number <- round(rnorm(as.numeric(input$mu)), 2)
     #}) 

    output$number <- eventReactive(input$show, {
        round(rnorm(as.numeric(input$mu)), 2)
    })
    }
)

每次点击“开始”时,只想拥有一个具有给定平均值的正态分布的随机数。 eventReactive和observeEvent都没有工作。

2 个答案:

答案 0 :(得分:2)

我不是在observeEvent内有对象的忠实粉丝,所以这里是eventReactive的解决方案

library(shiny)
ui <- shinyUI(fluidPage(
  sidebarLayout(
    sidebarPanel(
      sliderInput("Mean",label="Drag to select the mean of the normal distribution",min=0,max=5,value=0),
      actionButton("show","Go")
    ),
    mainPanel(
      h3("The number is"),
      textOutput('number')
    )   
  )
))

server <- shinyServer(function(input, output) {

  data <- eventReactive(input$show, {
    round(rnorm(as.numeric(input$Mean)), 2)
  })

  output$number <- renderText({
    data()
  })

}
)
shinyApp(ui, server)

答案 1 :(得分:0)

eventReactive的输出是一个反应变量。您需要使用renderTextobserveEvent。你还没有在你的ui中定义input$mu,我认为它应该是input$Mean

执行上述修改后,您的服务器代码应如下所示:

 server <- shinyServer(function(input, output) {

           observeEvent(input$show, {
           output$number <- renderText(round(rnorm(as.numeric(input$Mean)), 2))
           })

         }
         )

希望它有所帮助!