有人可以为我检查下面的代码并告诉我出了什么问题吗?
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都没有工作。
答案 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
的输出是一个反应变量。您需要使用renderText
和observeEvent
。你还没有在你的ui中定义input$mu
,我认为它应该是input$Mean
执行上述修改后,您的服务器代码应如下所示:
server <- shinyServer(function(input, output) {
observeEvent(input$show, {
output$number <- renderText(round(rnorm(as.numeric(input$Mean)), 2))
})
}
)
希望它有所帮助!