我创建了一个简单的应用程序,您可以在其中输入一些数据并将其添加到数据框。当我关闭应用程序并再次打开它时,应该显示之前添加的数据。
我在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)
答案 0 :(得分:0)
我找到了背后的原因:
当请求申请但没有申请时 实例运行后,将启动一个新的应用程序实例。那 应用程序实例将获得提供的捆绑软件的完整副本。 应用程序的部署时间。存储将是持久的 当应用程序处于运行状态时。空闲超时后 达到后,应用程序将进入睡眠状态,并且任何 对文件系统的更改将丢失。
通过在我的保管箱中保存可能会更改为RDS文件的对象,并在打开应用程序后加载这些文件来创建解决方法。