R 刷新数据时,绘图未在服务器上更新
我无法将闪亮应用程序部署到闪亮服务器 基本上,我有一个每天早上更新的CSV,我想让服务器上的闪亮应用程序检查是否每五分钟刷新一次,并反应性地编辑数据并显示下图 这种数据扫描(R 刷新数据时,绘图未在服务器上更新,r,shiny,shiny-server,R,Shiny,Shiny Server,我无法将闪亮应用程序部署到闪亮服务器 基本上,我有一个每天早上更新的CSV,我想让服务器上的闪亮应用程序检查是否每五分钟刷新一次,并反应性地编辑数据并显示下图 这种数据扫描(create\u issue\u spotter\u data)在R中需要相对较长的时间,因此我也有一种略为粗略的方法来确保在新会话开始时不会发生这种数据刷新:我有一个start变量来检查它是否等于1。如果是,则会递增,以便下次更新chat\u file()时,将调用create\u issue\u spotter\u da
create\u issue\u spotter\u data
)在R中需要相对较长的时间,因此我也有一种略为粗略的方法来确保在新会话开始时不会发生这种数据刷新:我有一个start
变量来检查它是否等于1。如果是,则会递增,以便下次更新chat\u file()
时,将调用create\u issue\u spotter\u data
函数。如果这是一个糟糕的练习,我愿意完全移除它
当这个应用程序在本地运行时,它的工作方式正是我想要的。但是,它不能在闪亮的服务器上工作。代码发布如下:
write.csv(mtcars, 'mtcars.csv')
create_issue_spotter_data = function(df) {
df$new_column = 0
df = df[df$mpg < 20, ]
return(df)
}
ui <- fluidPage(
fluidRow(align = "center", downloadButton("download_btn")),
fluidRow(align = "center", plotOutput("distPlot"))
)
server <- function(input, output) {
start <- 1
file <- reactiveFileReader(
intervalMillis = 1000 * 60 * 5,
session = NULL,
filePath = 'mtcars.csv',
readFunc = readr::read_csv
)
this_df = eventReactive(file(), {
if (start != 1) {
print(paste("Now updating the data. Date:", Sys.time()))
saved_df <<- create_issue_spotter_data(file())
df <- saved_df
} else {
start <<- start + 1
print(paste("Everything's good at", Sys.time()))
df <- saved_df
}
df
})
output$download_btn <- downloadHandler(
filename = paste0(paste("Issue", "Spotter", gsub("-", "_", Sys.Date()), sep = "_"), ".pdf"),
content = function(file) {
pdf(file)
p = build_cluster_viz(this_df(), download = TRUE)
print(p)
dev.off()
}, contentType = "pdf")
output$distPlot <- renderPlot({
plot(this_df()$mpg, this_df()$disp)
})
}
write.csv(mtcars,'mtcars.csv')
创建问题观察者数据=功能(df){
df$new_列=0
df=df[df$mpg<20,]
返回(df)
}
感谢您让您的数据重现!在Shining server中运行时,您的错误是什么?@divibisan基本上,绘图没有记录数据已更改。我注意到,我无法真正解释为什么当我在本地做某事时,我的应用程序是打开的,因此会更新更改。但是,在shiny服务器上,由于应用程序可能在数小时内未打开,因此它不会记录数据文件已更改,因此也会通知绘图更改。我正试图让我的应用程序看到发生了变化,但当有人进入应用程序时,也不会重新运行更新,因为实际的create\u issue\u date\u spotter
大约需要一个小时。你能将create\u issue\u date\u spotter
功能完全移出闪亮的应用程序吗?例如,让一个cron作业每天运行一个单独的脚本来检查更改,并在需要时运行create\u issue\u date\u spotter
。我认为,这将简化您的问题,并允许您在后台更新数据集,而无需在运行时将闪亮的应用程序挂起一小时runs@divibisan那可能行得通。对于存储数据集并从R调用它,您有什么建议?