是否可以使用没有光泽会话的renderPlot结果?

我已经基于每8小时更新一次的数据创建了一个仪表盘来显示图表。此数据通过cron-jobbed Python脚本更新,因此R / shiny仅用于绘图/仪表板目的。通过几个reactive函数,最后是一个renderPlot函数来创建图。是否可以在没有光亮的上下文的情况下调用或导入这些反应函数,以便我可以在不运行仪表板的情况下创建绘图?

最终目标是创建图并在每次从Python更新数据时保存/发送它,而无需重复的R代码。

xuyongm 回答:是否可以使用没有光泽会话的renderPlot结果?

我认为最好的方法是创建一个包。

例如,如果通过{golem}框架构建应用程序,则可以在应用程序外部使用内部的“业务”功能。

所以这个想法是:

  • 构建需要输入并生成图的函数
  • 在renderPlot中使用此功能。

例如:

在情节中。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)'的内容。

本文链接:https://www.f2er.com/3168531.html

大家都在问