我如何查询API来刷新 Dataframe 中的数据,并在不停止Shiny的情况下对所述数据执行计算?

eagi6jfj  于 2023-05-20  发布在  其他
关注(0)|答案(1)|浏览(66)

我正在使用httr和jsonlite查询API。整理这些数据,然后进行一些计算。然后使用Shiny应用程序呈现数据。除了必须停止Shiny应用程序以便查询API以获取新数据之外,所有功能都运行良好。有没有一种方法可以查询API并执行上述计算,而不必停止Shiny?我的目标是每5分钟查询一次API,并通过Shiny显示最新的数据。我很抱歉,如果这是一个基本的问题,但我是相对新的光泽。

bbuxkriu

bbuxkriu1#

“...我不认为这将执行查询API的R脚本中的代码...":您弄错了。
您没有提供API或计算的详细信息,因此我仅通过生成一个随机的tibble来模拟对API的调用。另外,为了保存您等待五分钟查看数据变化的时间,我每两秒查询一次“API”。

library(shiny)
library(tidyverse)

queryAPI <- function() {
  tibble(X = rnorm(5), Y = rnorm(5))
}

ui <- fluidPage(
  tableOutput("table"),
  plotOutput("plot")
)

server <- function(input, output, session) {
  apiData <- reactive({
    invalidateLater(2000)
    queryAPI()
  })
  
  output$table <- renderTable({ apiData() })
  
  output$plot <- renderPlot({ 
    apiData() %>% ggplot() + geom_point(aes(x = X, y = Y))
  })
}

shinyApp(ui, server)

相关问题