2012-12-16 5 views
3

Недавно я начал играть с Shiny. Я пытался написать что-то, чтобы продемонстрировать центральную предельную теорему. мой код выглядит следующим образом:R/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"))) 
)) 

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, reactiveTable и reactivePlot.

+0

Большое вам спасибо! – Alex

Смежные вопросы