【发布时间】:2020-05-19 17:30:27
【问题描述】:
我正在编写一个 Shiny 应用程序,它允许用户查看和更改多个数据框。最终,我希望更改覆盖原始数据帧中的值,以便可以在计算中使用它们。以下是我到目前为止所拥有的。我已经弄清楚如何允许用户在数据帧之间切换、更改 dfs 的值以及“重置”对 df1 和 df2 原始值的更改。但我想添加一个用用户更改覆盖 df1 和 df2 的 observeEvent。
library(shiny)
library(DT)
df1 <- data.frame(a = c('a','b','c','d','e'),
b = round(rnorm(5, 0,1),2))
df2 <- data.frame(a = c('a','b','c','d','e'),
b = round(rnorm(5, 1,1.5),2))
ui <- fluidPage(
titlePanel("example"),
sidebarLayout(
sidebarPanel(
selectInput(inputId = "df",
label = "Choose a table:",
choices = c("df1",
"df2")),
),
mainPanel(
actionButton("reset", "Reset"),
actionButton("save", "Save Changes"),
DTOutput("df")
)
)
)
server <- function(input, output) {
dfInput <- reactive({
switch(input$df,
"df1" = df1,
"df2" = df2)
})
observeEvent(input$reset, {
output$df <- renderDT(dfInput(), editable = TRUE,
options = list(lengthChange = FALSE))
})
output$df <- renderDT(dfInput(), editable = TRUE,
options = list(lengthChange = FALSE))
}
shinyApp(ui = ui, server = server)
谢谢!
【问题讨论】: