我已经基于每8小时更新一次的数据创建了一个仪表盘来显示图表。此数据通过cron-jobbed Python脚本更新,因此R / shiny仅用于绘图/仪表板目的。通过几个reactive
函数,最后是一个renderPlot
函数来创建图。是否可以在没有光亮的上下文的情况下调用或导入这些反应函数,以便我可以在不运行仪表板的情况下创建绘图?
最终目标是创建图并在每次从Python更新数据时保存/发送它,而无需重复的R代码。
我认为最好的方法是创建一个包。
例如,如果通过{golem}
框架构建应用程序,则可以在应用程序外部使用内部的“业务”功能。
所以这个想法是:
例如:
在情节中。R
my_plot <- function(dataset){
ggplot(dataset,aes(Sepal.Length,Sepal.Width)) +
geom_point()
}
然后您可以在应用程序中重复使用它:
library(shiny)
ui <- function(request){
plotOutput("plot")
}
server <- function(input,output,session){
r <- reactiveValues()
observe({
r$data <- iris
})
output$plot <- renderPlot({
my_plot(r$data)
})
}
shinyApp(ui,server)
这里的想法是,如果您将所有内容都打包为一个包(例如,名为“ {myapp}
”的包),则可以在闪亮的上下文之外访问myapp::my_plot()
。
因此,在启动cron时,可以添加类似R -e 'myapp::my_plot(dataset)'
的内容。