4

最近シャイニーと遊び始めました。私は中心極限定理を実証するために何かを書こうとしていました。私のコードは次のとおりです。

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()、次のようになります。ご覧のとおり、プロットは表示されていません。

ここに画像の説明を入力してください

奇妙な部分は、Rstudioに戻り、「Esc」を押してアプリを終了すると、以下に示すようにRstudioにプロットが表示されることです。

ここに画像の説明を入力してください

誰かが私のコードの問題が何であるか知っているのだろうか。ありがとう!!

4

1 に答える 1

9

reactivePlot(...)だけでなく、でプロット関数をラップしたいreactive(...)

一般に、依存データを関数reactive(...)に配信するサーバー内のヘルパー関数に使用する必要があります。ただし、実際にオブジェクトを生成する関数は、 、、、 などの特殊なリアクティブ関数でラップする必要があります。inputoutputoutputreactiveTextreactivePrintreactiveTablereactivePlot

于 2012-12-16T18:40:45.893 に答える