2017-10-16 14 views
0

本質的に、それらを操作する外部ウィジェットを持つRhandsontables間を切り替えようとしています。また、これらのテーブルには下位の数式があります。これらの表は本質的に同じもので、ウィジェットと数式はどちらの場合も同じように機能しますが、私はちょうどそれらを切り替えることができます。以下の例では、...参考...Shiny:Rhandsontableと外部パラメータで反応性データセットを切り替える

library(shiny) 
library(rhandsontable) 

RepData1 <- data.frame(col1 = c(1:10) 
         ,col2 = "C1" 
         ,col3 = runif(10,0,0.023) 
         ,col4 = runif(10,0,1)) 
RepData2 <- data.frame(col1 = c(1:10) 
         ,col2 = "C2" 
         ,col3 = runif(10,0,0.023) 
         ,col4 = runif(10,0,1)) 

ui=fluidPage(

    sliderInput("mySlider",label="Slider", min = 0, max = 100, post = " %", value = 50) 
    ,numericInput("Total", "Total:", 500000) 
    ,verbatimTextOutput("value") 

    ,fluidRow(
     column(3, radioButtons("Buttn10", label="col", choices= c("C1","C2"), selected = "C1", inline = TRUE)) 
     ,column(6,rHandsontableOutput("hotable1")) 
     ) 
) 

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

    selData <- "" 

    previous <- reactive({ 
    if(input$Buttn10 == "C1") { 
     if(selData == "" | selData == "C2") { 
     selData <<- "C1" 

     return(RepData1) 
     } 
    } else { 
     if(selData == "C1") { 
     selData <<- "C2" 

     return(RepData2) 
     } 
    } 

    }) 

    MyChanges <- reactive({ 
    if(is.null(input$hotable1)){ 
     return(previous()) 

     } else if(!identical(previous(),input$hotable1)){ 

    mytable <- as.data.frame(hot_to_r(input$hotable1)) 

    x <- input$Total*(input$mySlider/100) 


     mytable$QTY <- x*mytable$col4 
     mytable 
    } 
    }) 

    output$hotable1 <- renderRHandsontable({ 


         if(is.null(MyChanges())) return() 
         df_ <- MyChanges() 

         rhandsontable(df_, readOnly = FALSE, rowHeaders= NULL, useTypes= TRUE) %>% 
         hot_table(highlightCol = TRUE, highlightRow = TRUE) 
        }) 

}) 

shinyApp(ui,server) 
この場合

、ウィジェットや数式が動作しますが、ないスイッチングに

+0

」をあなたは "切り換え"の意味をよく理解していますか? –

+0

は私がUI部にラジオボタン(「C1」、「C2」)を使用して切り替えるしようと思っている上記の例における2つのデータフレームを有します。スライダーと全入力に接続されたまま、私はここにやってのけるしようとしているトリックは、RepData1とRepData2を切り替えることである... – TesterL3X18999

答えて

0

がある可能性があります。試してみてください。私はドン

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

    previous <- reactive({ 
    if(input$Buttn10 == "C1") { 
     return(RepData1) 
    } 
    if(input$Buttn10 == "C2"){ 
     return(RepData2) 
    } 

    }) 

    MyChanges <- reactive({ 
    mytable <- previous() 

    x <- input$Total*(input$mySlider/100) 


    mytable$QTY <- x*mytable$col4 
    mytable 
    }) 

    output$hotable1 <- renderRHandsontable({ 

    df_ <- MyChanges() 

    rhandsontable(df_, readOnly = FALSE, rowHeaders= NULL, useTypes=TRUE) %>% 
     hot_table(highlightCol = TRUE, highlightRow = TRUE) 
    }) 

}) 
+0

私はいくつかの理由で、私は「QTY」列との接続を失うことスライダーと合計入力... – TesterL3X18999

+0

私は、私のanwsermを変更してみてください。 –

+0

クール!ありがとうございました。それはうまくいった。あまりにも早くhot_tableに変換したのは問題でしたか?反応性に害を与えたくない場合は、出力ステップでのみ行う必要がありますか? – TesterL3X18999

関連する問題