我在R中创建了一个仪表板。从6周前开始,我对R一无所知/很少,但上周我能够完成我的版本1.现在的问题是如何在Raspberry Pi上呈现这一点。
我希望R Script每15分钟运行一次以进行更新。我看待它的方式有两种。 我可以从一个cron作业运行R脚本,但除非我从本机R环境运行R脚本,否则它不会在屏幕上显示GGPlot。
其次,我可以从cron作业运行R脚本,输出到pdf,然后运行cron作业来显示pdf。 Xpdf工作正常,但这意味着每次迭代都需要终止最后一次迭代,然后重新运行Xpdf再次打开文件。
第二种选择是一种解决方法,但不是很漂亮。我已经将所有代码都放在了这个阶段,但我很感激任何人都可以参考哪条路线。
答案 0 :(得分:1)
鉴于您使用Shiny构建仪表板,您可以使用invalidateLater()
。查看它的默认脚本:
if (interactive()) {
ui <- fluidPage(
sliderInput("n", "Number of observations", 2, 1000, 500),
plotOutput("plot")
)
server <- function(input, output, session) {
observe({
# Re-execute this reactive expression after 1000 milliseconds
invalidateLater(1000, session)
# Do something each time this is invalidated.
# The isolate() makes this observer _not_ get invalidated and re-executed
# when input$n changes.
print(paste("The value of input$n is", isolate(input$n)))
})
# Generate a new histogram at timed intervals, but not when
# input$n changes.
output$plot <- renderPlot({
# Re-execute this reactive expression after 2000 milliseconds
invalidateLater(2000)
hist(rnorm(isolate(input$n)))
})
}
shinyApp(ui, server)
}
来源:https://shiny.rstudio.com/reference/shiny/latest/invalidateLater.html
invalidateLater()
函数的第一个参数的值以毫秒为单位。 15分钟是900000毫秒。
编辑:根据内部命令,确实可以在特定时间间隔内重复脚本,可以通过多种方式完成(link1或link2或其他方式{{1}在闪亮的背景下)。以下是其中一个以无限循环形式的改编,每6秒绘制一次ggplot2直方图:
invalidateLater()