闪亮的数据框编辑不会保存在Shinyapps.io上

时间:2018-10-06 12:06:33

标签: r shiny

我创建了一个简单的应用程序,您可以在其中输入一些数据并将其添加到数据框。当我关闭应用程序并再次打开它时,应该显示之前添加的数据。

我在R本地工作。但是,一旦将其部署到shinyapps.io,它似乎就无法工作。当我添加一些数据并重新打开该应用程序时,以前添加的所有数据都消失了。

我的猜测是,它不会保存到Shinyapps.io上的“全局环境”中,但是不确定,因为我是部署此类应用程序的新手。

以下是可重现的示例。

library(shiny)
library(DT)

data <- data.frame(title = character(), start = as.Date(character()), end = as.Date(character()), 
                   stringsAsFactors=FALSE)

ui <- function(){fluidPage(

  titlePanel("Test"),

  sidebarLayout(
    sidebarPanel(
      dateInput("date",
                label = "Date"),
      selectInput("from", "From", choices = c("08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30",
                                            "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30",
                                            "16:00", "16:30")),
      selectInput("until", "Until", choices = c("08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30",
                                            "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30",
                                            "16:00", "16:30"), selected = "16:30"),
      actionButton("add", "Add")
    ),


    mainPanel(
      tabsetPanel(
        tabPanel("Table", DT::dataTableOutput("table"))
      )
    )
  )
)}

server <- function(input, output) { 

  values_data <- reactiveValues()
  values_data$df <- data

  addData <- observeEvent(input$add, {
    newLine <- isolate(data.frame(title = paste(input$from, " - ", input$until), start = as.Date(input$date)
                                  , end = as.Date(input$date)))
    values_data$df <- isolate(rbind(values_data$df, newLine))
    data <<- values_data$df
  })

  output$table <- DT::renderDataTable({
    datatable(values_data$df, editable = FALSE)
  })
}

shinyApp(ui, server)

1 个答案:

答案 0 :(得分:0)

我找到了背后的原因:

  

当请求申请但没有申请时   实例运行后,将启动一个新的应用程序实例。那   应用程序实例将获得提供的捆绑软件的完整副本。   应用程序的部署时间。存储将是持久的   当应用程序处于运行状态时。空闲超时后   达到后,应用程序将进入睡眠状态,并且任何   对文件系统的更改将丢失。

通过在我的保管箱中保存可能会更改为RDS文件的对象,并在打开应用程序后加载这些文件来创建解决方法。