在Shiny应用中删除DT数据表的行

Sco*_*yLa 4 r shiny dt

我有一个闪亮的应用程序,可以在DT表中显示数据框数据。在应用程序中,我有一个按钮,单击该按钮后,它将删除所选的行。第一次选择行并单击删除按钮时,它会起作用,但是再次单击后,错误的行将被删除,并且先前删除的行会重新出现。我假设这是因为它在我调用时从csv重新加载数据帧DT::renderDataTable()

从数据框中删除选定的行后,如何重新呈现表?

Val*_*vić 7

这可以帮助您入门:

用户界面

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

服务器

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

    })
Run Code Online (Sandbox Code Playgroud)

  • 如果它本身是一个reactiveVal(来自另一个shiny-module),我在实现“df”时遇到问题。有人对此有提示吗? (2认同)