I have a shiny app that displays data frame data in a DT table. In the app I have a button that I when clicked will delete the selected rows. It works the first time I select rows and click the delete button but after clicking again the wrong rows are deleted and any previously deleted rows reappear. I'm assuming this is because it reloads the data frame (from a csv) when I call DT::renderDataTable()
.
How can I re render the table after deleting a selected row from the the data frame?
This could get you started:
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
})
})
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With