【发布时间】:2019-09-24 06:55:15
【问题描述】:
我想创建一个显示响应式表格的闪亮应用。我希望能够同时排除某些行并将排除的行保存在我服务器上的 .Rda 文件中。关键是要永久排除某些行,因此每次有人加载闪亮的应用程序时,这些行就已经被排除在外了。
我已经完成了 95% 的工作——我闪亮的应用程序显示表格并将排除的行保存在我服务器上的 .Rda 文件中。当我重新启动应用程序时,会排除正确的行,但是我无法让表动态排除我排除它们的同一会话中的行。基本上,我希望能够按下操作按钮并立即排除行。
这是闪亮的应用程序
library(shiny)
library(tidyverse)
ui <- fluidPage(
mainPanel(
DT::dataTableOutput("flag"),
actionButton("exclude", "Exclude")
)
)
server <- function(input, output) {
df <- data.frame(id = 1:10, fu_score = 1:10,
stringsAsFactors = FALSE)
if (file.exists("data/prev_exclude.Rda")) {
load("data/prev_exclude.Rda")
} else {
prev_exclude <- data.frame(id = 0, fu_score = 0, stringsAsFactors = FALSE)
save(prev_exclude, file = "data/prev_exclude.Rda")
}
df_flag <- reactive({
df %>%
anti_join(., prev_exclude, by = c("id", "fu_score"))
})
output$flag <- DT::renderDataTable({
DT::datatable(df_flag(), options = list(paging = FALSE))
})
selected_prev <- eventReactive(input$flag_rows_selected, {
data.frame(id = df_flag()$id[c(input$flag_rows_selected)],
fu_score = df_flag()$fu_score[c(input$flag_rows_selected)])
})
observeEvent(input$exclude, {
prev_exclude <- isolate(bind_rows(selected_prev(), prev_exclude))
save(prev_exclude, file="data/prev_exclude.Rda")
load("data/prev_exclude.Rda")
})
}
# Run the application
shinyApp(ui = ui, server = server)
再次,我希望能够 1. 在会话期间从显示的表中排除行(即按下操作按钮并删除行)和 2. 保存排除的行以供将来排除。我的代码处理第二部分,但它不会在我的会话期间排除行(仅在重新加载时)。
【问题讨论】: