我创建了一个仪表板,它根据每8小时更新一次的数据显示一个图。这些数据是通过cron作业的Python脚本更新的,因此R/shiny仅用于绘图/仪表板。这个图是通过几个reactive函数创建的,最后是一个renderPlot。是否可以在没有闪亮上下文的情况下调用或导入这些反应性函数,这样我就可以在不运行仪表板的情况下创建绘图了?
最后的目标是创建绘图,并在每次从Python更新数据时保存/发送它,而不需要重复的R代码。
发布于 2019-11-04 07:26:21
我认为最好的方法是创建一个包。
例如,如果通过{golem}框架构建应用程序,则可以在应用程序之外使用内部“业务”函数。
所以我们的想法是:
中使用该函数。
例如:
在图谋中。
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)'的内容。
https://stackoverflow.com/questions/58688764
复制相似问题