2014-05-23 19 views
9

Shiny hakkında bir sorum var. Google ve SO arşivleriyle zaman geçirdiğimi, birkaç şeyi denediğimi, ancak yine de bir şekilde bir şeyleri özlediğimi sunarak önsöz oluyorum. Herhangi bir gönderme sahte pas için özür dilerim ve herhangi bir rehberlik için şimdiden teşekkür ederim.R Shiny - ui.R sunucu tarafından okunan bir veri çerçevesini tanımıyor gibi görünüyor.R

Parlak galeri örneklerinden birinin kodunu değiştirerek Parlaklık öğrenmek için çok temel bir görev olduğuna inanıyorum. Bir veri dosyasına bir csv dosyası okudum (df.shiny). Bir tesisle ilgili (df.shiny$Facility seviyeleri) işletme performans verilerini (ITBpct) seçmek ve bir SPC grafiğinde görüntülemek (qcc kullanarak).

Sorunum server.R aracılığıyla ui.R kullanılabilir duruma getirme ile ilgili gibi görünüyor. Verilerin, veri çerçevesine (konsolda yazdırılır) okunduğuna inanıyorum, ancak ui.R için geçerli değildir. Bir şeyleri gözden kaçırdığına inanıyorum ama henüz çözmedim.

Parlak site üzerinde belirtilen klasör yapısını, çalışma dizini alt klasöründe ("Parlak Uygulama-1") server.R ve ui.R ile ve bu klasöre bir alt klasördeki verileri kullanıyorum (Parlak -App-1/veriler).

Hata izlemenize yardımcı olmak için eklediğim kod, konsolda SRV-2 ve UI-1 yazdırma işlemlerini gerçekleştirir. Firefox açılır. Sonra hata.

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

server.R Kod

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 Kod

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')) 

)) 

Hata Mesajı

ERROR: object 'df.shiny' not found 

Verileri mevcut yapabilirim. (Bu nota bir örneği ekleyin nasıl emin değildi.)

OTURUM BİLGİ

> 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 

cevap

11

sorun size ui.R dosyasında df.shiny$Facility kullanıyor ve df.shiny orada tanımlanmamış olmasıdır. ui, server'daki tüm değişkenleri göremez, iletişim kurmanın başka yolları vardır.

Bunu işe almak için, sunucuda selectInput sürümünü oluşturup UI'de oluşturmalısınız. Sunucunuz olarak,

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

ekleyebilir ve daha sonra Alternatif bir global.R dosyada hem server.R ve ui.R tarafından erişilebilir olması için gereken tek şey R nesneleri koymak olabilir

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

Merhaba ... çok teşekkürler! Bu beni bir sonraki adıma geçirdi. Şimdi başka konular yaşıyorum ama biraz daha fazla okuma ve belki başka bir yazı yapacağım. Yine teşekkürler! – crlong