2016-09-22 9 views
0

スライダの値をmainPanel単位でテーブルの値を更新したいとします。私のコードは以下の通りです。アクションボタンはスライダ入力値を更新しません

library(shiny) 

    ui <- shinyUI(fluidPage(
     sidebarPanel(
selectInput(inputId="Zone", label="Choose Forecasting Zone:",choices = list("North", "South")), 
wellPanel( 
    conditionalPanel(
     condition = "input.Zone == 'North'", 
     sliderInput("num1", "No of Sellers:",0,3500,value = c(2877,3277),step=1), 
     sliderInput("num3", "Activation Percentage:",0,1,value = c(0.25,0.32),step=0.01), 
     sliderInput("num5", "Case Size:",0,200000,value = c(60000,75000),step=1), 
     sliderInput("num7", "Case Rate:",0,4,value = c(1.34,1.45),step=0.01) 
    ), 
    conditionalPanel(
     condition = "input.Zone == 'South'", 
     sliderInput("num1", "No of Sellers:",0,3500,value = c(1008,1148),step=1), 
     sliderInput("num3", "Activation Percentage:",0,1,value = c(0.26,0.32),step=0.01), 
     sliderInput("num5", "Case Size:",0,200000,value = c(70000,80000),step=1), 
     sliderInput("num7", "Case Rate:",0,4,value = c(1.15,1.22),step=0.01) 
    ), 
    actionButton("sumbit", "Submit") 
) 
), 
     mainPanel("",htmlOutput("ValueTable")) 
    ) 
    ) 

    server <- function(input, output, session) { 

     aab <- reactive({ 
input$sumbit 
isolate({ 
    a1<-cbind(input$num1[1],input$num1[2]) 
    a2<-cbind(input$num3[1],input$num3[2]) 
    a3<-cbind(input$num5[1],input$num5[2]) 
    a4<-cbind(input$num7[1],input$num7[2]) 

    aa<-cbind(input$Zone,a1,a2,a3,a4) 
    aa 
}) 
     }) 
     output$ValueTable <- renderUI({ 
input$sumbit 
isolate({ 
    aa<-aab() 
    aa<-as.data.frame(aa) 
    output$aa1 <- renderDataTable(aa,options = list(paging = FALSE,searching = FALSE,info=FALSE,autowidth=TRUE)) 
    dataTableOutput("aa1") 
}) 
     }) 
    } 

    shinyApp(ui, server) 

私がNorthとしてZoneを選択してSubmitを押すと、正しい値が表示されます。しかし、私がSouth as Zoneを選択すると、スライダは基本条件付きパネルを変更しますが、テーブルの値はまだ北です。

どうすればこの問題を解決できますか?私は送信ボタンを押すと

おかげ

答えて

0

は、ゾーンが選択された私のアプリの基礎の他の部分で使用されているように私は、条件付きのパネルで名前を変更することはできません

library(shiny) 

    ui <- shinyUI(fluidPage(
     sidebarPanel(
selectInput(inputId="Zone", label="Choose Forecasting Zone:",choices = list("North", "South")), 
sliderInput("num1", "No of Sellers:",0,3500,value = c(2877,3277),step=1), 
sliderInput("num3", "Activation Percentage:",0,1,value = c(0.25,0.32),step=0.01), 
sliderInput("num5", "Case Size:",0,200000,value = c(60000,75000),step=1), 
sliderInput("num7", "Case Rate:",0,4,value = c(1.34,1.45),step=0.01), 
actionButton("sumbit", "Submit") 
    ), 
     mainPanel("",htmlOutput("ValueTable")) 
    ) 
    ) 

    server <- function(input, output, session) { 

     observeEvent(input$Zone,{ 
if (input$Zone=="North"){ 
    updateSliderInput(session, "num1", value = c(2877,3277)) 
    updateSliderInput(session, "num3", value = c(0.25,0.32)) 
    updateSliderInput(session, "num5", value = c(60000,75000)) 
    updateSliderInput(session, "num7", value = c(1.34,1.45)) 
} 
else {} 
     }) 
     observeEvent(input$Zone,{ 
if (input$Zone=="South"){ 
    updateSliderInput(session, "num1", value = c(1008,1148)) 
    updateSliderInput(session, "num3", value = c(0.26,0.32)) 
    updateSliderInput(session, "num5", value = c(70000,80000)) 
    updateSliderInput(session, "num7", value = c(1.15,1.22)) 
} 
else {} 
     }) 

     aab <- reactive({ 
input$sumbit 
isolate({ 
    a1<-cbind(input$num1[1],input$num1[2]) 
    a2<-cbind(input$num3[1],input$num3[2]) 
    a3<-cbind(input$num5[1],input$num5[2]) 
    a4<-cbind(input$num7[1],input$num7[2]) 

    aa<-cbind(input$Zone,a1,a2,a3,a4) 
    aa 
}) 
     }) 
     output$ValueTable <- renderUI({ 
input$sumbit 
isolate({ 
    aa<-aab() 
    aa<-as.data.frame(aa) 
    output$aa1 <- renderDataTable(aa,options = list(paging = FALSE,searching = FALSE,info=FALSE,autowidth=TRUE)) 
    dataTableOutput("aa1") 
     }) 
     }) 
    } 

    shinyApp(ui, server) 
0

は、表中の値は、私は北か南にいるかどうか、更新されます。 aab()submitボタンで反応し、スライダーでは反応しません。 アプリを読み込んでZone Northのスライダを動かすと、submitを押さなかったときもデータは更新されません。

他のコントロールを分離しているため、スライダを変更するときに反応部分をアクティブにしません。

また、両方の条件付きパネル(num1 num3 num5num7)に同じ名前を使用しています。南入力の名前を変更し、条件付きで結果をaab()に作成する必要があります。ここで

+0

溶液 - です。 – user1463242

+0

問題が解決しました。私は 'observeEvent'を使用して、それぞれのゾーン選択のスライダ値を変更しました。 – user1463242

+0

上記の例のソリューションコードを回答として投稿できますか? – Wietze314

関連する問題