【问题标题】:Sending tabe as output from Shiny does not render in Shiny UI将 tabe 作为 Shiny 的输出发送不会在 Shiny UI 中呈现
【发布时间】:2016-12-05 03:20:09
【问题描述】:

对于来自闪亮 UI 的给定输入,我已经从我的表中计算了最小值、最大值、Q1、Q3 值。但无法从 server.R 发送循环变量。

# ui.R
library(shiny)
library(RODBC)
library(DBI)
dbconnect <- odbcConnect("orecloud", uid="XXX", pwd="XX", believeNRows=FALSE)
df <- data.frame()
df <- sqlQuery(dbconnect,"SELECT distinct cpan FROM CYTOKINE ")
shinyUI(fluidPage(
  headerPanel("ORE Cytokine 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 文件中,我需要将输出变量 UI.R 发送到 renderDataTable

服务器.R

library(RODBC)
library(RODBC)
library(lattice)
    shinyServer(
      function(input, output) {

        dbconnect <- odbcConnect("orecloud", uid="XXXX", pwd="XXXX", believeNRows=FALSE)

        df2 = reactive({
          # Created DB Connection to get details 
          input_var <- input$CPAN
          my_query <- paste("select CPAN,SCTP,MARKER,RESULT from CYTOKINE where CPAN= ", input_var)
          sqlQuery(dbconnect,my_query)
          cleandata <- na.omit(data)
          colnames(cleandata)
          Markers <- unique(cleandata[,"MARKER"])
           nMarkers <- length(Markers)
          nMarkers
          Patients <- unique(cleandata[,"CPAN"])
          nPatients <- length(Patients)
          nPatients
         output <- data.frame("Marker","Patient", "Min","Q1","Median","Mean","Q3","Max",stringsAsFactors=FALSE,check.names=FALSE)
          output
          for (i in 1:nMarkers) {
            Mrk <- Markers[i]    
            for (j in 1:nPatients){
              Pnt <- Patients[j]
              Mrkdata  <- cleandata[which(cleandata[,'MARKER']== Mrk),]
              Ptntdata <- Mrkdata[which(Mrkdata[,'CPAN']==Pnt), ]
              output[{i-1}*nPatients+j,1] <- Mrk
              output[{i-1}*nPatients+j,2] <- Pnt
              for (k in 1:6){
                output[{i-1}*nPatients+j,k+2] <- summary(Ptntdata[,'RESULT'])[k]
                #histogram(~Mrkdata [,'RESULT'])
              }
              #output[j,9]<- quantile(Mrkdata[,'RESULT'],c(.25,.75))[1]
              #output[j,10]<- quantile(Mrkdata[,'RESULT'],c(.25,.75))[2]
            }        
          } 
        })
        output$tableoutput <- renderDataTable({df2()}) 
           } )

【问题讨论】:

  • df2 不返回任何内容。您是否要打印 output 数据框?
  • 嗨,马特,是的,我想打印输出数据框。当我在 r 控制台中执行此操作时,我可以打印输出。当我将其作为脚本执行时,同样不起作用。

标签: r shiny


【解决方案1】:

看看这是否有效:

df2 <- reactive({
  # Created DB Connection to get details 
  input_var <- input$CPAN
  my_query <- paste("select CPAN,SCTP,MARKER,RESULT from CYTOKINE where CPAN= ", input_var)
  sqlQuery(dbconnect,my_query)
  cleandata <- na.omit(data)
  colnames(cleandata)
  Markers <- unique(cleandata[,"MARKER"])
  nMarkers <- length(Markers)
  Patients <- unique(cleandata[,"CPAN"])
  nPatients <- length(Patients)
  output <- data.frame("Marker","Patient", "Min","Q1","Median","Mean","Q3","Max",stringsAsFactors=FALSE,check.names=FALSE)

  for (i in 1:nMarkers) {
    Mrk <- Markers[i]    
    for (j in 1:nPatients){
      Pnt <- Patients[j]
      Mrkdata  <- cleandata[which(cleandata[,'MARKER']== Mrk),]
      Ptntdata <- Mrkdata[which(Mrkdata[,'CPAN']==Pnt), ]
      output[{i-1}*nPatients+j,1] <- Mrk
      output[{i-1}*nPatients+j,2] <- Pnt
      for (k in 1:6){
        output[{i-1}*nPatients+j,k+2] <- summary(Ptntdata[,'RESULT'])[k]
      }
    }        
  }
  output
})


output$tableoutput <- renderTable({
    data.table(df2())
})

另外,在 UI 中进行此更改:

mainPanel(
        tableOutput("tableoutput")
    )

【讨论】:

  • 不走运,马特。没有显示错误,但屏幕在过去 5 分钟内处于空闲状态。什么都没有显示。
  • 尝试将之前提到的 return(output) 改为 output- 我编辑了答案以反映这一点
  • 我已更改为仅输出马特。没有运气。下面显示错误消息,我的浏览器处于空闲状态,没有显示任何内容。我是 R 的新手,可能错过了一件简单的事情,但无法找到。控制台上显示以下警告:
  • 警告:关闭未使用的 RODBC 句柄 9
  • 完美。谢谢垫子!非常感谢您的大力支持。
猜你喜欢
  • 2019-03-14
  • 2017-09-29
  • 1970-01-01
  • 2018-12-04
  • 2016-09-19
  • 2020-02-15
  • 1970-01-01
  • 2017-09-03
  • 2019-08-20
相关资源
最近更新 更多