Проблемы при добавлении и удалении строки в R блестящие данные - PullRequest
0 голосов
/ 11 ноября 2019

Я пытаюсь добавить редактируемые данные в блестящий. У меня есть два компонента к нему. Во-первых, позволяя пользователю добавить новую строку и удалить выбранную строку. Во-вторых, когда пользователь изменяет любое значение в ячейке, он должен обновить соответствующую ячейку. Прежде всего, я не могу удалить выбранные строки. Я могу добавить их, но не удалить. Ниже приведен код, который я использую. Также я пытаюсь сбросить таблицу по умолчанию, но она не будет сброшена к таблице по умолчанию. Как я могу это исправить. Спасибо.

### Libraries
library(shiny)
library(dplyr)
library(DT)

### Data
input_data <- data.frame(aa = c("Brand1", "Brand2","Brand3"),
                         bb = c(2000, 3000, 4000),
                         cc = c (.5, .5, .5),
                         dd = c(2000, 3000, 4000),
                         ee = c (.5, .5, .5),
                         ff = c (.5, .5, .5),
                         gg = c (.5, .5, .5),
                         stringsAsFactors = FALSE)

### Shiny App
shinyApp(
  ui = basicPage(
    mainPanel(

      actionButton("reset", "Reset"),
      actionButton("add_btn", "Add"),
      actionButton("delete_btn", "Delete"),
      tags$hr(),
      DT::dataTableOutput("mod_table")    )
  ),
  server = function(input, output) {

    #demodata<-input_data

    this_table <- reactiveVal(input_data)

    observeEvent(input$add_btn, {
      t = rbind(data.frame(aa = "default",
                           bb = 1000000,cc = 2.0,dd = 20000, ee = 40,ff = 00 , gg = 00), this_table())
      this_table(t)
    })

    observeEvent(input$delete_btn, {
      t = this_table()
      print(nrow(t))
      if (!is.null(input$shiny_table_rows_selected)) {
        t <- t[-as.numeric(input$shiny_table_rows_selected),]
      }
      this_table(t)
    })
observeEvent(input$reset, {
       this_table <- input_data # your default data
     })

    output$mod_table <- DT::renderDataTable({
      datatable(this_table(), selection = 'single',editable = TRUE, options = list(dom = 't'))

    })
    }
)

...