【问题标题】:Run SQL when selecting tab with shiny选择带有闪亮的选项卡时运行 SQL
【发布时间】:2020-05-24 07:23:24
【问题描述】:

在这个闪亮的应用程序中,三个 SQL 在启动时运行。 但是,这会给启动带来沉重的负担。 选择每个选项卡时是否可以运行SQL?

ui.R

shinyUI(
  navbarPage(title = NULL,
             tabPanel("home","hello"),
             tabPanel("1",
                      tableOutput("table1")),
             tabPanel("2",
                      tableOutput("table2")),
             tabPanel("3",
                      tableOutput("table3")))
)

服务器.R

shinyServer(function(input, output) {
  
  output$table1 <- renderTable({
    sql <- "SELECT * FROM City WHERE ID = '1';"
    query <- sqlInterpolate(pool, sql)
    dbGetQuery(pool, query)
  })
  
  output$table2 <- renderTable({
    sql <- "SELECT * FROM City WHERE ID = '2';"
    query <- sqlInterpolate(pool, sql)
    dbGetQuery(pool, query)
  })
  
  output$table3 <- renderTable({
    sql <- "SELECT * FROM City WHERE ID = '3';"
    query <- sqlInterpolate(pool, sql)
    dbGetQuery(pool, query)
  })
  
})

global.R

library(shiny)
library(DBI)
library(pool)

pool <- dbPool(
  drv = RMySQL::MySQL(),
  dbname = "shinydemo",
  host = "shiny-demo.csa7qlmguqrf.us-east-1.rds.amazonaws.com",
  username = "guest",
  password = "guest"
)

【问题讨论】:

  • 你好@Tim Ikata,到目前为止你有什么尝试?你需要的是一个反应函数,我的意思是每当你点击一个标签时,这个动作就会触发查询。

标签: r shiny


【解决方案1】:

你可以尝试响应式如下代码:

shinyServer = function(input, output){
    reactive({
      if (req(input$navbar) == "table1")
        # Run your sql1
      if (req(input$navbar) == "table2")
        # Run your sql2
      if (req(input$navbar) == "table3")
        # Run your sql3
    })

希望对你有帮助。

【讨论】:

  • 理想实现了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-02
  • 1970-01-01
  • 2017-11-30
  • 1970-01-01
相关资源
最近更新 更多