2016-08-25 13 views
1

DTテーブルにデータフレームデータを表示する光沢のあるアプリがあります。アプリケーションでは、クリックしたときに選択した行が削除されるボタンがあります。行を選択して削除ボタンをクリックすると初めて動作しますが、再度クリックすると間違った行が削除され、以前に削除された行が再び表示されます。私はDT::renderDataTable()を呼び出すと、データフレーム(csvから)をリロードするので、これが仮定されています。光沢のあるアプリでDTデータテーブルの行を削除

データフレームから選択した行を削除した後にテーブルを再レンダリングするにはどうすればよいですか?

答えて

1

これは、あなたが始めることができます:

library(shiny) 
    library(DT) 
    shinyUI(fluidPage(
     titlePanel("Delete rows with DT"), 
       sidebarLayout(
       sidebarPanel(
        actionButton("deleteRows", "Delete Rows") 
       ), 
       mainPanel(
        dataTableOutput("table1") 
       ) 
      ) 
    )) 

server.R

library(shiny) 
    library(DT) 
    library(dplyr) 
    df <- data.frame(x = 1:10, y = letters[1:10]) 

    shinyServer(function(input, output) { 
      values <- reactiveValues(dfWorking = df) 

      observeEvent(input$deleteRows,{ 

        if (!is.null(input$table1_rows_selected)) { 

          values$dfWorking <- values$dfWorking[-as.numeric(input$table1_rows_selected),] 
        } 
      }) 

      output$table1 <- renderDataTable({ 
        values$dfWorking 
      }) 

    }) 

ui.R

関連する問題