r - 如何在给定时间而不是在计时器上更新反应函数?
问题描述
我希望正在运行的闪亮应用程序在指定时间更新数据,每次系统中的分钟数都是 15 的倍数(例如:12:00、12:15、12:30、12:45、13:00、 13:15 等)。我目前使用每 15 分钟触发一次的反应计时器,但这并不能解决我的问题。如何仅在系统时间变为 15 的倍数时更新应用程序?
解决方案
获取当前时间,确定下一次刷新前的时间量,并invalidateLater()
适当调用。
例如,以下闪亮的应用程序每 15 秒的倍数刷新时钟:
library(shiny)
ui <- fluidPage(
mainPanel(
textOutput('time')
)
)
server <- function(input, output) {
output$time <- renderText({
time <- as.integer(format(Sys.time(), "%S"))
invalidateLater((15 - time %% 15) * 1000)
format(Sys.time(), "%H:%M:%S")
})
}
shinyApp(ui = ui, server = server)
编辑:
自上次编辑以来,我稍微简化了计算。time <- as.integer(format(Sys.time(), "%S"))
只需获取当前时间的第二部分。我们计算这个秒数 MODULO 15 ( time %% 15
) 以获得最后 15 秒倍数之后的秒数。然后我们从 15 中减去该值,以获得下一个倍数之前的秒数。由于时间必须以毫秒为单位,我们将结果乘以 1000。
推荐阅读
- sql - 带外连接的长查询,
- node.js - Heroku 没有显示对 laravel 的 Vue.js 更改
- r - 如何使用 if 进行嵌套 for 循环
- c - 给定 C 中的指针返回 16 位
- git - 如何在没有结帐分支的情况下知道另一个分支顶部提交
- web-scraping - 创建随机点击和时刻来模拟人类行为 - Scrapy
- swift - 在 SwiftUI AppKit 项目中,没有触发 DropDelegate 的 dropEntered
- matlab - MATLAB中的线性回归没有fitlm
- keras - 带有分层 LSTM 的 Keras
- r - 如何在随机森林中获得相同的预测(概率和类别)