2016-08-25 9 views
1

У меня есть блестящее приложение, которое отображает данные фрейма данных в таблице DT. В приложении у меня есть кнопка, которую я щелкнул, удалив выбранные строки. Он работает в первый раз, когда я выбираю строки и нажимаю кнопку «Удалить», но после повторного нажатия неправильные строки удаляются, и все ранее удаленные строки снова появляются. Я предполагаю, что это происходит потому, что он перезагружает фрейм данных (из csv), когда я вызываю DT::renderDataTable().Удалить строку таблицы данных DT в приложении Shiny

Как я могу отобразить таблицу после удаления выбранной строки из фрейма данных?

ответ

1

Это может заставить вас начать:

ui.R

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 
      }) 

    })