【发布时间】:2020-03-07 08:31:48
【问题描述】:
我正在尝试在 r shiny 中添加一个可编辑的数据表。我有两个组件。首先是允许用户添加新行并删除选定行。其次,当用户更改单元格中的任何值时,它应该更新相应的单元格。我首先面临的问题是无法删除选定的行。我可以添加这些但不能删除。下面是我正在使用的代码。另外我正在尝试重置为默认表,但它不会重置为默认表。我怎样才能解决这个问题。谢谢。
### 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'))
})
}
)
【问题讨论】:
-
这个答案对你有用吗?