2016-10-30 6 views
0

ラジオボタン入力param_type_graphの値に従って、ラジアルネットワークまたは対角線ネットワーク(パッケージnetworkD3を使用)を表示しようとしました。私はrenderUI()関数にいくつかのif文を入れようとしましたが、明らかに動作しません。 Shiny Appはthereです。放射状の場合にのみ機能します。次の入力でアプリをテストしてください:最初の入力: "petrus"; 2番目の入力: 'WinesAndCo'と入力し、最後の青いボタンをクリックして送信してください。R Shiny:リアクティブ値に基づいた異なるタイプの出力

UI

ui <- fluidPage(

    # Application title 
    titlePanel("Carrefour Hierarchical Exploration"), 

    sidebarLayout(

    # Sidebar with a slider input 
    sidebarPanel(
     textInput("param_caption", "Rechercher une famille de vin : ", "petrus"), 
     radioButtons("param_sites", "Choisis sur quel site", 
        c("Auchan" = "1", 
        "G.V.P." = "2", 
        "Lavinia" = "3", 
        "Millesima" = "4", 
        "Vinatis"="5", 
        "WinesAndCo"="6")), 
     radioButtons("param_typegraph", "Type de Graphique", 
        c("Radial Network" = "rad", 
        "Diagonal Network" = "diag" 
        )), 
     sliderInput("param_height", "Graph Height:", 
        min = 300, max = 3000, value = 300 
    ), 
     sliderInput("param_width", "Graph Width:", 
        min = 400, max = 4000, value = 400 
    ), 
     sliderInput("param_size", "Police Size:", 
        min = 10, max = 60, value = 10 
    ), 
     actionButton(inputId="param_go",label="Submit",style="color: #fff; background-color: #337ab7; border-color: #2e6da4") 


    ), 
    # Show a plot of the generated distribution 
    mainPanel(
     uiOutput('mygraph') 

    ) 
) 
) 

サーバ

server <- function(input, output) { 
# a lot of compution ... that I do not display 
# ... 
    output$graphresdiag <- renderDiagonalNetwork({ 
    diagonalNetwork (tree_to_display(),height = input$param_height,width = input$param_width, fontSize = input$param_size) 
    }) 
    output$graphresrad <- renderRadialNetwork({ 
    radialNetwork (tree_to_display(),height = input$param_height,width = input$param_width, fontSize = input$param_size) 
    }) 

    output$mygraph= renderUI({ 

    if (isolate(input$param_typegraph)=="diag") 
     {diagonalNetworkOutput(outputId = "graphresdiag", 
           width = paste0(input$param_width,"px"), 
           height =paste0(input$param_height,"px"))} 

    if (isolate(input$param_typegraph)=="rad") 
    {radialNetworkOutput(outputId = "graphresrad", 
          width = paste0(input$param_width,"px"), 
          height =paste0(input$param_height,"px"))} 


    }) 

} 

あなたはそれを動作させるために何をしますか?

+0

それは私が探しものだそうです 'conditionalPanel' –

+0

thksをお試しください –

答えて

1

私はそれをしました。それを機能させるために変更したコードの一部以下。

UI

mainPanel(

    conditionalPanel(
    condition = "input.param_typegraph == 'rad'", 
    uiOutput('mytabs') 
), 
    conditionalPanel(
    condition = "input.param_typegraph == 'diag'", 
    uiOutput('mytabsii') 
) 

) 

サーバ

output$graphresdiag <- renderDiagonalNetwork({ 
    diagonalNetwork (tree_to_display(),height = input$param_height,width = input$param_width, fontSize = input$param_size) 
    }) 
    output$graphresrad <- renderRadialNetwork({ 
    radialNetwork (tree_to_display(),height = input$param_height,width = input$param_width, fontSize = input$param_size) 
    }) 

    output$mytabs = renderUI({ 

radialNetworkOutput(outputId = "graphresrad", 
          width = paste0(input$param_width,"px"), 
          height =paste0(input$param_height,"px")) 

    }) 


    output$mytabsii = renderUI({ 

    diagonalNetworkOutput(outputId = "graphresdiag", 
          width = paste0(input$param_width,"px"), 
          height =paste0(input$param_height,"px")) 

    }) 
関連する問題