2016-07-30 18 views
0

Ich habe Min-, Max-, Q1-, Q3-Werte aus meiner Tabelle für eine bestimmte Eingabe von shiny UI berechnet. Aber nicht in der Lage, die Loop-Variable von Server.R zu senden.Senden von Tabes als Ausgabe von Shiny wird nicht in Shiny UI gerendert

# 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") 
    ) 
) 
)) 

Hier in Server.R Datei muss ich die Ausgangsgröße UI.R senden renderDataTable

server.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()}) 
      }) 
+0

'df2' gibt nichts zurück. Möchten Sie den Ausgabedatenrahmen drucken? –

+0

Hallo Matt, Ja Ich möchte Ausgabedatenrahmen drucken. Wenn ich dies in r-Konsole ausführe, kann ich die Ausgabe ausdrucken. Das gleiche funktioniert nicht, wenn ich dies als Skript ausführe. –

Antwort

0

sehen, ob das funktioniert:

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()) 
}) 

Nehmen Sie diese Änderung auch in UI vor:

mainPanel(
     tableOutput("tableoutput") 
    ) 
+0

Kein Glück Matt. Es wird kein Fehler angezeigt, aber der Bildschirm befindet sich im Leerlauf der letzten 5 Minuten. Nichts wird angezeigt. –

+0

Versuchen Sie, die Zeile zu ändern, die früher 'return (output)' hieß, nur 'output'- Ich habe die Antwort bearbeitet, um das widerzuspiegeln –

+0

Ich habe mich zu Just output Matt geändert. Es gibt kein Glück. Darunter werden Fehlermeldungen angezeigt und mein Browser ist inaktiv und es wird nichts angezeigt. Ich bin Neuling in R und vermisse wahrscheinlich eine einfache Sache, aber ich kann es nicht herausfinden. Die folgenden Warnungen werden auf der Konsole angezeigt: –