2012-12-16 22 views
3

我最近开始玩Shiny。我试图写些东西来证明中心极限定理。我的代码如下:R /发光的情节不显示在浏览器

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"))) 
)) 

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))}) 
}) 

当我试图运行使用runApp()的代码,下面是我得到了什么。正如你所看到的,该图不会显示。

enter image description here

怪异的一部分是,当我回到我的Rstudio,并按下“ESC”退出应用程序,在我Rstudio中显示的情节,如下图所示:

enter image description here

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

回答

8

你想打包你的绘图功能reactivePlot(...),而不仅仅是reactive(...)

一般而言,reactive(...)应该用于服务器中的辅助函数,该函数将input相关数据提供给output函数。但是,实际上生成output对象的函数应该使用特定的反应函数进行封装,例如reactiveText,reactivePrint,reactiveTablereactivePlot

+0

非常感谢! – Alex