2014-05-23 4 views
9

Ho una domanda su Shiny. Pregheremo di offrire che ho passato del tempo con gli archivi di Google e SO, ho provato alcune cose, ma ancora mi manca qualcosa. Mi scuso per qualsiasi posting faux pas e ringrazio in anticipo per qualsiasi consiglio.R Shiny - ui.R sembra non riconoscere un dataframe letto dal server.R

Sto provando quello che credo sia un compito molto basilare per imparare il codice lucido e di adattamento da uno degli esempi di Shiny. Ho letto un file CSV in un dataframe (df.shiny). Voglio selezionare i dati delle prestazioni aziendali (ITBpct) relativi a una struttura (livelli di df.shiny$Facility) e visualizzarli in un grafico SPC (utilizzando qcc).

Il mio problema sembra essere correlato alla disponibilità dei dati da server.R a ui.R. Credo che i dati vengano letti nel dataframe (viene stampato nella console), ma non è disponibile per ui.R. Sono convinto di aver semplicemente trascurato qualcosa, ma non l'ho ancora capito.

Sto usando la struttura delle cartelle annotata sul sito Shiny, con server.R e ui.R in una sottocartella della directory di lavoro ("Shiny-App-1") e i dati in una sottocartella in questa cartella (Shiny -App-1/dati).

Il codice che ho inserito per aiutare a tracciare l'errore passa attraverso la stampa SRV-2 e UI-1 nella console. Firefox si apre. Quindi l'errore.

options(browser = "C:/Program Files (x86)/Mozilla Firefox/firefox.exe") 
library(shiny) 
runApp("Shiny-App-1") 

Codice server.R

library(shiny) 
library(qcc) 
print("SRV-1") # for debugging 

df.shiny = read.csv("data/ITBDATA.csv") 
print(df.shiny) # for debugging 
print("SRV-2") # for debugging 


shinyServer(function(input, output, session) { 
    # Combine the selected variables into a new data frame 
    # assign xrow <- Facility 

    print("SRV-3") # for debugging 
    selectedData <- reactive({ subset(df.shiny, Facility %in% input$xrow) }) 
    print("SRV-4") # for debugging 

    output$plot1 <- renderPlot({ qcc(selectedData$ITBpct, type = 'xbar.one') }) 
}) 

ui.R Codice

library(shiny) 
print("UI-1") # for debugging 

shinyUI(pageWithSidebar(
    headerPanel('SPC Chart by Facility'), 
    sidebarPanel(selectInput('xrow', 'Facility', levels(df.shiny$Facility))), 
    mainPanel(plotOutput('plot1')) 

)) 

messaggio di errore

ERROR: object 'df.shiny' not found 

Posso rendere disponibili i dati. (Non era sicuro di come collegare un campione alla presente nota.)

SESSIONE INFORMAZIONI

> sessionInfo() 
R version 3.1.0 (2014-04-10) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 

locale: 
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C       
[5] LC_TIME=English_United States.1252  

attached base packages: 
[1] splines stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] plyr_1.8.1  forecast_5.4  timeDate_3010.98 zoo_1.7-11  doBy_4.5-10  
[6] MASS_7.3-31  survival_2.37-7 gplots_2.13.0 car_2.0-20  ggplot2_0.9.3.1 
[11] lattice_0.20-29 qcc_2.3   shiny_0.9.1 

risposta

11

Il problema è che si sta utilizzando df.shiny$Facility nel file ui.R e df.shiny non è definito lì. Lo ui non può vedere tutte le variabili nello server, hanno altri modi di comunicare.

Per fare in modo che funzioni, è necessario creare il selectInput sul server e quindi visualizzarlo nell'interfaccia utente. Nel server, aggiungere

shinyServer(function(input, output, session) { 
    output$facilityControl <- renderUI({ 
     facilities <- levels(df.shiny$Facility) 
     selectInput('xrow', 'Facility', facilities) 
    }) 

    selectedData <- reactive({ subset(df.shiny, Facility %in% input$xrow) }) 
    output$plot1 <- renderPlot({ qcc(selectedData$ITBpct, type = 'xbar.one') }) 
}) 

e quindi modificare l'interfaccia utente per

shinyUI(pageWithSidebar(
    headerPanel('SPC Chart by Facility'), 
    sidebarPanel(uiOutput("facilityControl"), 
    mainPanel(plotOutput('plot1'))  
)) 
+0

Ciao ... grazie mille! Questo mi ha fatto fare il passo successivo. Ora sto avendo altri problemi, ma leggerò un po 'di più e forse un altro post. Ancora una volta, grazie! – crlong

Problemi correlati