2015-12-22 14 views
5

Sono nuovo in questo libro e ricevo un errore con il codice di esempio per il primo capitolo. Ho installato l'ultima versione di R 3.2.3 e RStudio. Ho installato package_install.R dato dal codice di esempio e poi installato ggplot2 da solo. Quando eseguo il codice ufo_sightings.R, ho ottenuto un errore come seguireErrore in strsplit (unitspec, "") nel codice per Machine Learning per hacker

`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). 

Sono nuovo di R in modo non ho idea di ciò che è sbagliato. Qualcuno può aiutare? È perché ho usato l'ultima versione di R?

Edit: Penso di aver trovato il motivo. Se cambio ggplot in versione 1.01, ha funzionato bene. Se lo aggiorno a 2.0.0 si verifica l'errore. Immagino sia un bug?

+0

Possibile motivo: è appena uscita una nuova versione di 'ggplot2'. Vedi http://blog.rstudio.org/2015/12/21/ggplot2-2-0-0/ – Jubbles

+0

Ho provato a eseguire il downgrade di ggplot2, ma mi è stato detto che ggplot2_1.0.1 non è disponibile per R3.2.3. Ora ho provato a eseguire il downgrade di R a 3.2.2, ma ho ancora lo stesso problema. – Ben

+0

Ho una copia di _Machine Learning for Hackers_ di Drew Conway e John Myles White, e non vedo l'esempio che stai citando nel Capitolo 1. Puoi confermare che ho il libro corretto e fornire un riferimento alla pagina? – Jubbles

risposta

9

Il problema si trova nella funzione ggplot scale_x_date. Nel codice originale questo è codificato come:

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

Le interruzioni in scale_x_date è stato modificato per date_breaks. Se si regola il codice al seguente, funziona.

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

Nel resto del codice in cui si vede ggplot e scale_x_date, si dovrà regolare le pause in date_breaks.

+0

Perché non si può usare 'minor_breaks' lì con' scale_x_date'? –

0

Per me, entrambi utilizzano la versione di ggplot 1.0.1 e regolano gli intervalli di data per 10 anni per DateReported mentre 50 anni per DateOccured, funzionano perfettamente e generano una visualizzazione piacevole.

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") 
Problemi correlati