2015-12-22 8 views
5

Jestem nowy w tej książce i otrzymuję błąd z przykładowym kodem dla pierwszego rozdziału. Zainstalowałem najnowszą wersję R 3.2.3 i RStudio. Zainstalowałem package_install.R podany przez przykładowy kod, a następnie zainstalowałem ggplot2 samodzielnie. Kiedy uruchomić kod ufo_sightings.R, mam błąd jak postępowaćBłąd w strsplit (unitspec, "") w kodzie dla uczenia maszynowego dla hakerów

`stat_bin()` using `bins = 30`. Pick better value with `binwidth`. 
Error in strsplit(unitspec, " ") : non-character argument 
In addition: Warning message: 
Removed 1 rows containing non-finite values (stat_bin). 

Jestem nowy R więc nie mam pojęcia co jest nie tak. Czy ktoś może pomóc? Czy to dlatego, że użyłem najnowszej wersji R?

Edytuj: Myślę, że znalazłem przyczynę. Jeśli zmienię ggplot na wersję 1.01, to działa dobrze. Jeśli zaktualizuję go do wersji 2.0.0, pojawi się błąd. Zgaduję, że to błąd?

+0

Możliwy powód - pojawiła się nowa wersja 'ggplot2'. Zobacz http://blog.rstudio.org/2015/12/21/ggplot2-2-0-0/ – Jubbles

+0

Próbowałem zmienić wersję ggplot2, ale powiedział mi, że ggplot2_1.0.1 nie jest dostępny dla R3.2.3. Teraz próbowałem zmienić wersję R na 3.2.2, ale wciąż mam ten sam problem. – Ben

+0

Mam kopię _Machine Learning for Hackers_ autorstwa Drew Conway i Johna Mylesa White'a i nie widzę przykładu, który cytujesz w Rozdziale 1. Czy możesz potwierdzić, że mam poprawną książkę i podać odniesienie do strony? – Jubbles

Odpowiedz

9

Problem leży w funkcji ggplot scale_x_date. W oryginalnym kodzie to jest kodowana jako:

quick.hist <- ggplot(ufo.us, aes(x = DateOccurred)) + 
    geom_histogram() + 
    scale_x_date(breaks = "50 years") 

przerw w scale_x_date został dostosowany do date_breaks. Jeśli dostosujesz kod do poniższych, to działa.

quick.hist <- ggplot(ufo.us, aes(x = DateOccurred)) + 
    geom_histogram() + 
    scale_x_date(date_breaks = "50 years", date_labels = "%Y") 

W pozostałej części kodu, gdzie można zobaczyć ggplot i scale_x_date, trzeba będzie dostosować przerwy w date_breaks.

+0

Dlaczego nie można użyć 'minor_breaks' tam z' scale_x_date'? –

0

Dla mnie, zarówno używanie wersji ggplot 1.0.1, jak i dostosowywanie daty_breaków przez 10 lat dla DateReported podczas 50 lat dla DateOccured, działa absolutnie dobrze i generuje ładną wizualizację.

quick.hist <- ggplot(ufo.us, aes(x = DateOccurred)) + 
    geom_histogram() + scale_x_date(date_breaks = "50 years", date_labels = "%Y") 

quick.hist <- ggplot(ufo.us, aes(x = DateReported)) + 
    geom_histogram() + 
    scale_x_date(date_breaks = "10 years", date_labels = "%Y") 
Powiązane problemy