2016-08-25 69 views
1

我有一個閃亮的應用程序,它在DT表中顯示數據幀數據。在應用程序中,我點擊一個按鈕將刪除選定的行。這是我第一次選擇行並單擊刪除按鈕,但在再次單擊後,將刪除錯誤的行並重新出現任何先前刪除的行。我假設這是因爲當我呼叫DT::renderDataTable()時它會重新加載數據幀(來自csv)。在Shiny應用程序中刪除DT數據表的一行

如何從數據框中刪除選定的行後重新呈現表格?

回答

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

    }) 
相關問題