R/Shiny图不会在浏览器中显示

Ale*_*lex 3 plot r rstudio shiny

我最近开始玩Shiny.我试图写一些东西来证明中心极限定理.我的代码如下:

ui.R:

#****************************************ui.R file code*****************************

library(shiny)
shinyUI(pageWithSidebar(headerPanel("Central Limit Theorem"),
                        sidebarPanel(selectInput("Distribution", 
                                                 "Distribution:", 
                                                 list("normal", "lognormal")),
                                                 br(),
                                                 sliderInput("sam_size", 
                                                              "Sample size:", 
                                                              min = 5, 
                                                              max = 500, 
                                                              value = 5)
                        ),
                        mainPanel(tabPanel("Plot", plotOutput("plot")))
))
Run Code Online (Sandbox Code Playgroud)

server.R:

#****************************************server.R file code**************************
library(shiny)
shinyServer(function(input, output){
        data <- reactive(function(){Distribution <- switch(input$Distribution,
                                                           normal = rnorm,
                                                           lognormal = rlnorm,
                                                           rnorm
                                                           )
                                    Distribution(input$sam_size*2000)})

        output$plot <- reactive(function(){
                            Distribution <- input$Distribution
                            sam_size <- input$sam_size
                            temp <- matrix(data(), ncol=2000)
                            xbars <- colMeans(temp)
                            hist(xbars, main=paste("Sampling Distribution of the Mean Based on a", Distribution,
                         "distribution with n =", sam_size))})
})
Run Code Online (Sandbox Code Playgroud)

当我尝试使用代码时runApp(),下面是我得到的.如您所见,未显示绘图.

在此输入图像描述

奇怪的是,当我回到我的Rstudio,并按下"Esc"退出应用程序时,我的Rstudio中显示的情节如下所示:

在此输入图像描述

我想知道是否有人知道我的代码有什么问题.谢谢!!

Mat*_*rde 9

你想用你的绘图函数包装reactivePlot(...),而不仅仅是reactive(...).

通常,reactive(...)应该用于服务器中的辅助函数,它们将相关的input数据传递给output函数.实际产生的功能output的目的,然而,应当与各专门反应性官能团包裹,如reactiveText,reactivePrint,reactiveTable,和reactivePlot.