【问题标题】:Not able to Render Data table无法渲染数据表
【发布时间】:2016-12-04 03:49:09
【问题描述】:

我正在尝试将 DataTable 输出呈现给 Shiny。请在下面找到我的用例的解释:

  1. 连接到我的数据库并将表数据获取到df 变量。
  2. 将选择输入文本框中的选定输入发送到服务器脚本。
  3. 服务器脚本应该接受这个输入并获取数据。

    ui.R

    library(shiny)
    library(RODBC)
    
    library(DBI)
    # Establishing connection to ORE environment
        dbconnect <- odbcConnect("orecloud", uid="XXXX", pwd="XXXXX", believeNRows=FALSE)
    # Preparing data frames to get the data and show in select input pick list
        df <- data.frame()
        df <- sqlQuery(dbconnect,"SELECT distinct cpan FROM TABLE ")
        shinyUI(fluidPage(
           headerPanel("ORE XXX Summary"),
        sidebarLayout(
        sidebarPanel(
          helpText("Please select Patient Details.."),
          selectInput("CPAN", 
                      label = "Choose patient",
                      choices = df,
                      selected = NULL),
        submitButton(text = "Submit", icon = NULL)),
        mainPanel(
        dataTableOutput("tableoutput")
        )
      )
    ))
    

server.R

  1. 服务器脚本应该接受输入并从表中查询数据
  2. 将选中的数据渲染到 UI
  3. 如果我在 UI 中更改值,那么它应该显示选定的输入数据。

    library(RODBC)
    
    shinyServer(
      function(input, output) {
            dbconnect <- odbcConnect("orecloud", uid="oracle",     pwd="Edvenswa2016", believeNRows=FALSE)
            df2 <- data.frame()
            input_var <- input$CPAN
            print (input_var)
            my_query <- paste("select * from CYTOKINE where CPAN=  ", input_var)
            print(myquery)
            df2 <- sqlQuery(dbconnect,myquery)
            output$tableoutput <- renderDataTable({df2})
       }
    )
    

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    你需要做响应式

    df2=reactive({
    input_var <- input$CPAN
    my_query <- paste("select * from CYTOKINE where CPAN= ", input_var)
    sqlQuery(dbconnect,myquery)
    })
    

    并像renderDataTable({df2()}) } )一样使用

    如果 input$CPAN 是你需要的字符 paste0("select * from CYTOKINE where CPAN= '", input_var,"'")

    别忘了断开连接

    session$onSessionEnded(function() {
      odbcClose(dbconnect )
    })
    

    【讨论】:

    • @Batanicheck - 谢谢!!
    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多