2017-01-15 7 views
0

ドロップダウンメニューで選択した入力カテゴリに応じて、グラフの数を表示することを検討しています。 Rシャイニーだけが1つの出力を許可するように見えるので、私はこれを行う方法を見ることができません。私は以下の非常に簡単な例を概説しました。私は、ヒストグラムが不必要で、おそらく1つのグラフに表示できることを認識しています。しかし、私がやっている実際の例はもっと複雑で、複数のグラフが必要です。RShiny - 入力カテゴリに応じて異なる数の出力グラフを表示する

gender <- c("male","male","female","female","male","male","male") 
sports <-c("running","swimming","basketball","fishing","karate","hockey","gymnastics") 
regularplayer <-c(.2,.4,.3,.5,.1,.1,.1) 
casualplayer <-c(.2,.3,.6,.2,.2,.2,.2) 
nonplayer <-c(.6,.3,.1,.3,.7,.7,.7) 

sports <-as.data.frame(cbind(gender,sports,regularplayer,casualplayer,nonplayer)) 

ui <- fluidPage(

     selectInput("gender","Select Gender",c("Male","Female")) 
    ) 



server <-function(input, output) { 

    output$gender <- renderPlot({ 

    if (input$gender == "Male") { 

    # Need to create 5 histograms, one for each sport by% played 
    } 
    else if (input$gender == "Female") { 

     # Need to create 2 histograms, one for each sport by% played 
    } 

     #return graphs as single output, either 5 or 2 depending on gender selected 

    }) 

} 


shinyApp(ui = ui, server = server) 

答えて

0

これは行くための可能な方法である:

global.R データを保持します。 ui.Rとserver.Rと同じフォルダに入れてください。 メルト機能の警告メッセージは心配しないでください。メスケースにすべてのスポーツがあるわけではないからです。

library(reshape2) 
    gender <- c("male","male","female","female","male","male","male") 
    sports <-c("running","swimming","basketball","fishing","karate","hockey","gymnastics") 
    regularplayer <-c(.2,.4,.3,.5,.1,.1,.1) 
    casualplayer <-c(.2,.3,.6,.2,.2,.2,.2) 
    nonplayer <-c(.6,.3,.1,.3,.7,.7,.7) 

    sports <-as.data.frame(cbind(gender,sports,regularplayer,casualplayer,nonplayer)) 
    sports_melted <- melt(sports, id.vars = c("gender", "sports"), variable.name = "player_type", value.name = "player_percent") 

ui.R

library(shiny) 


    shinyUI(fluidPage(


     titlePanel("Old Faithful Geyser Data"), 


     sidebarLayout(
     sidebarPanel(
       selectInput("gender","Select Gender",c("Male","Female")) 
     ), 


     mainPanel(
      plotOutput("gender") 
     ) 
    ) 
    )) 

server.R

library(shiny) 
    library(dplyr) 
    library(ggplot2) 

    # Define server logic required to draw a histogram 
    shinyServer(function(input, output) { 

      output$gender <- renderPlot({ 

        if (input$gender == "Male") { 
          male_data <- filter(sports_melted, gender == "male") 
          gg <- ggplot(male_data, aes(x=player_type, y = player_percent)) 
          gg <- gg + geom_bar(stat = "identity") 
          gg <- gg + facet_grid(.~sports) 
          # Need to create 5 histograms, one for each sport by% played 
        } 
        else if (input$gender == "Female") { 
          female_data <- filter(sports_melted, gender == "female") 
          gg <- ggplot(female_data, aes(x=player_type, y = player_percent)) 
          gg <- gg + geom_bar(stat = "identity") 
          gg <- gg + facet_grid(.~sports) 
        } 

        gg 

      }) 

    }) 
+0

本当にありがとうございました。これは私が必要とするものです! – pollacchi1981

関連する問題