【发布时间】:2021-11-23 05:39:34
【问题描述】:
我有一个闪亮的应用程序使用来自不同网站的数据,所有这些数据都是每月的。它们由网站处理程序在不同时间更新。我最初是在我的应用程序中直接从网站读取数据,但其中一个网站进行了 2 天的维护,我无法运行我的应用程序。我不希望那种情况再次发生。所以我想把数据保存在我的本地文件中,这样代码才能运行。
由于需要将数据更新为最新的可用值,因此我需要调度方面的帮助。我希望此代码每月运行一次,以便我的数据始终是最新的。
dMean <- function(d){
dd <- d %>% filter(!between(month, 4, 10)) %>%
arrange(Year, month) %>%
filter(!(Year == min(Year) & month %in% 1:3 |
Year == max(Year) & month %in% 11:12)) %>%
group_by(grp = cumsum(month == 11)) %>%
summarise(Year = last(Year),
value = mean(value)) %>%
select(-grp)
return(dd)
}
dG1 <- fread('https://www.metoffice.gov.uk/hadobs/hadcrut4/data/current/time_series/HadCRUT.4.6.0.0.annual_ns_avg.txt',
header = FALSE,select = c(1:2))
GTA1 <- as.matrix(dG1)
saveRDS(GTA1,"GTA.rds")
dM1 <- fread('https://psl.noaa.gov/data/correlation/mei.data',header = FALSE,fill = TRUE)
dM2 <- dM1[complete.cases(replace(dM1, dM1 == -999.000, NA)),]
dM3 <- matrix(as.numeric(unlist(dM2)),nrow=nrow(dM2))
dM4 <- data.frame(Year = rep(unique(dM3[,1]), each = 12),month = 1:12,value = as.vector(t(dM3[,2:13])))
MEI1 <- as.matrix(dMean(dM4))
saveRDS(MEI1,"MEI.rds")
dS1 <- fread('https://www.cpc.ncep.noaa.gov/data/indices/sstoi.indices',header = TRUE,select = c(1,2,10))
dS2 <- as.matrix(dS1)
dS3 <- data.frame(Year = dS2[,1],month = dS2[,2], value = dS2[,3])
SST1 <- as.matrix(dMean(dS3))
saveRDS(SST1,"SST.rds")
我将不胜感激。
【问题讨论】:
-
对不起,我不明白你的问题。您是希望您的shinyApp 定期保存数据并在某些情况下读取数据,还是您想在您的应用程序之外使用脚本来保存数据,然后您想知道您的shinyapp 如何读取数据?
-
我希望我的闪亮应用程序每个月从这些网站读取数据,比如第一天,并保存并替换旧数据文件。因此,数据将始终是最新的,以供进一步处理。我需要安排时间方面的帮助。我希望我在这里提供的代码每月运行一次。
-
根据您的评论,我认为您的问题存在于应用程序之外。您想找到一种方法在特定计划中运行 R 脚本,该计划由您的操作系统确定(或者您可以在容器中运行此脚本)。然后,在您闪亮的应用程序上,您可以将数据读取部分放在 tryCatach 中:如果尝试从 Web 读取失败,则求助于从磁盘读取。
标签: r shiny auto-update