2015-02-22 16 views
7

Próbuję połączyć aplikację R + Shiny, która przynajmniej początkowo kreśli histogram danych daty. Mam go działa dobrze na moim systemie lokalnym w RStudio, ale w shinyapps.io to nie działa.Skrypt R działa lokalnie, nie działa na shinyapp.io

Aplikacja jest w tej chwili bardzo prosta - interfejs użytkownika tak naprawdę nic nie robi, a dane to tylko niewielka próbka danych testowych.

Działa dobrze w RStudio (rysuje ładny mały histogram). Po załadowaniu na shinyapps.io, tekst na panelu tytułowym i wyświetlanie na pasku bocznym, ale po drugiej lub drugiej stronie albo - zgłasza błąd "" z "nie może być NA, NaN lub nieskończony" lub - ekran się wygasza, a skrypt zatrzymuje się (?) w obu przypadkach bez tworzenia histogramu.

Ma mnie zdumiony; byłby zainteresowany usłyszeć, czy ktoś ma jakieś sugestie dotyczące tego, gdzie popełniłem błąd. Być może ma to związek z Date - prawdopodobnie podobny problem został zgłoszony jako here, bez żadnego rozwiązania.

Moje dwie błyszczące pliki są:

# ui.R 

shinyUI(fluidPage(
    titlePanel("title panel"), 

    sidebarLayout(
    sidebarPanel(

    ), 

    mainPanel(

     plotOutput("distPlot") 

    ) 
) 
)) 

i

# server.R 
library(shiny) 

shinyServer(function(input, output){ 

    output$distPlot <- renderPlot({ 

     text_date <- c("9 March 2006", "31 October 2008", "24 September 2008", "27 February 2009", "19 May 2014", "11 December 2009", "7 August 2013", "8 December 2014", "2 February 2010", "22 December 2014", "20 December 2011", "4 September 2009", "19 December 2013", "10 October 2007", "19 September 2008") 

     num_date <- as.Date(text_date, format = "%d %B %Y") 

    #plot a histogram 

     hist(num_date, 
     breaks = "years", 
     format = "%Y", 
     freq = TRUE) 

    }) 

}) 

Brak błędów (lub czegokolwiek innego niż wersjach, począwszy od słuchania i dalej ...) zgłaszanych przez showLogs():

2015-02-22T10: 00: 50.507273 + 00: 00 shinyapps [32851]: R: wersja 3.1.2
2015-02- 22T10: 00: 50.509043 + 00: 00 shinyapps [32851]: wersja rmarkdown: 0.0.0
2015-02-22T10: 00: 50.507340 + 00: 00 shinyapps [32851]: Wersja błyszcząca: 0.11.1
2015- 02-22T10: 00: 50.509508 + 00: 00 shinyapps [32851]: knitr version: 0.0.0
2015-02-22T10: 00: 50.784283 + 00: 00 shinyapps [32851]:
2015-02-22T10: 00: 50.784285 + 00: 00 shinyapps [32851]: Począwszy Błyszczące z identyfikatorem procesu: '14'
2015-02-22T10: 00: 50.792403 + 00: 00 shinyapps [32851]:
2015-02-22T10: 00 : 50.792405 + 00: 00 shinyapps [32851]: Słuchając na http://0.0.0.0:57429

Odpowiedz

4

Masz dwa problemy. Po pierwsze, w swoich danych pominąłeś niektóre cytaty. Jednak ustalenie, które nie zmieniło wyniku. Skopiowałem twój kod, naprawiłem cytaty i wdrożyłem go i otrzymałem te same wyniki (działało lokalnie, ale nie na shinyapps.io).

Drugi (i ważniejszy problem) dotyczy sposobu, w jaki różne systemy operacyjne obsługują daty. Zmieniłem część danych serwera.R na:

text_date <- c("2006-03-09", "2008-10-31", "2008-09-24", "2009-02-27", "2014-05-19", "2013-08-07", "2014-12-08", "2010-02-02", "2014-12-22", "2011-12-20", "2009-09-04", "2013-12-19", "2007-10-10", "2008-09-19") 

To działało zarówno lokalnie, jak i na shinyapps.io. Problem nie dotyczy Twojego programu, ale sposobu przetwarzania dat.

Pomyślałem, że problem może być związany z początkowymi zerami wymaganymi w przypadku dat jednocyfrowych, ale zmiana nie rozwiązała problemu. Jednak gdy zastąpiłem nazwy miesięcy liczbami dwucyfrowymi, ponownie działało zarówno lokalnie, jak i na shinyapps.io. Dlatego wydaje się, że shinyapps.io ma trudności z konwersją nazw miesięcy na wartości daty. Jednak nie wiem, dlaczego tak się stało.

Aktualizacja: Po a lead provided by Fereshteh Karimeddini, I zmodyfikowane pliki osadzając następujący kod: W server.R:

output$dates = renderText({format(num_date, format = "%d %B %Y")}) 
output$location = renderText({Sys.getlocale(category = "LC_ALL")}) 

W ui.R:

textOutput("dates") 
textOutput("location") 

ciekawe, otrzymałem dokładnie takie same wyniki dla danych wyjściowych "daty", niezależnie od tego, czy byłem uruchomiony lokalnie, czy na shinyapps.io. Myślałem, że dostanę nazwy miesięcy po francusku lub coś takiego. Jednak dla wyniku "lokalizacji" uzyskałem różne wyniki. Lokalnie:

LC_COLLATE = English_United States.1252;
LC_CTYPE = English_United States.1252;
LC_MONETARY = English_United States.1252;
LC_NUMERIC = C;
LC_TIME = English_United States.1252

Na shinyapps.io:

LC_CTYPE = C.UTF-8;
LC_NUMERIC = C;
LC_TIME = C.UTF-8;
LC_COLLATE = C.UTF-8;
LC_MONETARY = C.UTF-8;
LC_MESSAGES = C.UTF-8;
LC_PAPER = C.UTF-8;
LC_NAME = C;
LC_ADDRESS = C;
LC_TELEPHONE = C;
LC_MEASUREMENT = C.UTF-8;
LC_IDENTIFICATION = C

Uwaga: Karetka powraca dodane dla czytelności.

Na debian forum znajdowało się a bug report (nie znam związku z Ubuntu, którego używa shinyapps.io), które odnotowało, że C.UTF-8 nie zawierało nazw miesięcy. Jednak to było od 2012 roku, a raport o błędzie stwierdził, że został naprawiony w najnowszej wersji. Ponadto, jeśli naprawdę nie było nazw miesięcy w C.UTF-8 na shinyapps.io, to nie powinno być możliwe wypisywanie nazw miesięcy (co zrobiło doskonale). To mnie zastanawiało - czy może podawać nazwy miesięcy, dlaczego nie może odczytać nazw miesięcy? Więc próbowałem to zrobić. W server.R:

text_date = c("09 03 2006") 
num_date <- as.Date(text_date, format = "%d %m %Y") 
x = format(num_date, format = "%d %B %Y") 
output$dates = renderText({x}) 
renum_date = as.Date(x, format = "%d %B %Y") 
output$redates = renderText({format(renum_date, format = "%d %B %Y")}) 

W ui.R:

sidebarPanel(textOutput("dates")), 
mainPanel(textOutput("redates")) 

Lokalnie sidebarPanel i mainPanel pokazał dokładnie to samo: 09 marca 2006. Jednak na shinyapps.io The mainPanel pokazał NA. Wydaje się więc, że to shinyapps.io może go rozdać, ale nie może tego znieść, przynajmniej jeśli chodzi o nazwy miesięcy. Jakie to dziwne?

+0

wow - Właśnie spędziłem kilka godzin próbując ustalić, dlaczego moja aplikacja nie działa na shinyapps.io, ale działa lokalnie. Wygląda na to, że było to również spowodowane shinyapps.io nie działa z 'as.Date' w.r.t. nazwy miesięcy – jalapic

1

Miałem ten sam problem. Wydaje się, że shinyapps.io używa różnych ustawień regionalnych. Próbowałem użyć% b w funkcji as.Date() i nie udało się poprawnie przekonwertować daty, co skutkowało rekordem pustym.To całkowicie mnie zepsuło, ponieważ nie spowodowało też żadnego błędu. Debugowanie, aby znaleźć 1 linię, nie było zabawne!

stworzyłem następujący kod inline rozwiązać mój nazwę miesiąca, ponieważ został sformatowany w ten sposób w moim źródłem danych, więc musiałem go przekonwertować:

meczu ((miesiąc), C („Jan”,” Feb "," Mar "," Apr "," May "," Jun "," Jul "," Aug "," Sep "," Oct "," Nov "," Dec "))

Miesiąc w powyższym kodzie jest nazwa zmiennej trzymającej wartość nazwy miesiąca. Przykładem pełnej linii użyciu tego kodu:

df $ Data < - z (df, pasta (rok, mecz ((miesiąc), c ("Jan", "luty", "Mar",” Apr "," May "," Jun "," Jul "," Aug "," Sep "," Oct "," Nov "," Dec ")), Dzień, sep =" - "))

Ciesz się!

Powiązane problemy