2017-04-21 13 views
0

データを表示したい場合にチェックボックスをオンにして、メインパネルに表示するデータテーブルの数を選択できるような光沢のあるアプリがあります。送信ボタンと更新ボタンの2つのアクションボタンがあります。ユーザーがselectinputで1または2または3を選択してsubmitを押すと、メインパネルに3つのデータセットが表示されます。リフレッシュしたり、チェックボックスをオフにすると、メインパネル画面がクリアされますが、チェックボックスを再びオンにすると、最後に表示されたテーブルがメインパネルに表示されます。これにより、画面もクリアされます。彼がボックスを再びチェックすると、画面をクリアするにはどうすればいいですか?ここに私のコードです。あなたはあなたにserver機能をこのコードを追加することができ、私はRに新しいです、このに探してくれてありがとうとシャイニーメインパネル画面の更新時にチェックボックス入力で問題が発生する

library(shiny) 
    library(DT) 
    ui <- fluidPage(
     sidebarLayout(
     sidebarPanel(
     checkboxInput("addData", "Add Data"), 
     conditionalPanel(condition="input.addData === true", 
      selectInput("amountTable", "Amount Tables", 1:10), 
      actionButton("submit1" ,"Submit", icon("refresh"), 
         class = "btn btn-primary"), 

      actionButton("refresh1" ,"Refresh", icon("refresh"), 
         class = "btn btn-primary") 
     ) 

     ), 
     mainPanel(
     # UI output 
     uiOutput("dt") 
     ) 
    ) 
    ) 

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

    global <- reactiveValues(refresh = FALSE) 

    observe({ 
     if(input$refresh1) isolate(global$refresh <- TRUE) 
    }) 

    observe({ 
     if(input$submit1) isolate(global$refresh <- FALSE) 
    }) 

    observeEvent(input$submit1, { 
     lapply(1:input$amountTable, function(amtTable) { 
     output[[paste0('T', amtTable)]] <- DT::renderDataTable({ 
     iris[1:amtTable, ] 
      }) 
    }) 
    }) 

    observeEvent(input$submit1, { 

    lapply(1:input$amountTable, function(j) { 
     output[[paste0('Text', j)]] <- renderText({ 
     paste0("This is AmountTable", j) 
     # br() ## add space in between the text and table 
     }) 
    }) 
}) 

output$dt <- renderUI({ 
    if(global$refresh) return() 
    tagList(lapply(1:input$amountTable, function(i) { 
     list(textOutput(paste0('Text', i)),br(), 
      dataTableOutput(paste0('T', i))) 
    })) 
}) 


} 

shinyApp(ui, server) 
+0

私はボックスのチェックを外すと、メイン画面がチェックされなくなります。 – BigDataScientist

答えて

1

observe({ 
    if(input$addData == FALSE) isolate(global$refresh <- TRUE) 
    }) 

これは、あなたがcheckbox

+0

ありがとうございました。これは私が探しているものです。 – aotearoa

1

をオフにするときは、代わりにこのラインの if(input$refresh1 | !input$addData) isolate(global$refresh <- TRUE)if(input$refresh1) isolate(global$refresh <- TRUE)

Editを使用する必要がありますテーブルを削除します:krishは速かったです。しかし、私は答えを残すようにコードを短縮します。

関連する問題