R pacchetto reticolo non verrà tracciato se eseguito utilizzando source ()

Ho iniziato a utilizzare il pacchetto grafico latex ma sono incappato in un problema. Spero che qualcuno possa darmi una mano. Voglio tracciare un istogramma usando la funzione corrispondente.

Ecco il file foo.r :

 library("latex") data <- data.frame(c(1:2),c(2:3)) colnames(data) <- c("RT", "Type") pdf("/tmp/baz.pdf") histogram( ~ RT | factor(Type), data = data) dev.off() 

Quando R --vanilla < foo.r questo codice usando R --vanilla < foo.r funziona tutto bene.

Tuttavia, se uso un secondo file bar.r con

 source("bar") 

ed esegui R --vanilla < bar.r il codice produce un file pdf errato. Ora ho scoperto che source("bar", echo=TRUE) risolve il problema. Che cosa sta succedendo qui? È un bug o mi sto perdendo qualcosa?

Sto usando R versione 2.13.1 (2011-07-08) con latex_0.19-30

È nella FAQ per R – hai bisogno di print() attorno alla funzione reticolare che chiami:

7.22 Perché la grafica reticolo / traliccio non funziona?

La ragione più probabile è che ti sei dimenticato di dire a R di visualizzare il grafico. Le funzioni di Lattice come xyplot () creano un object grafico, ma non lo visualizzano (lo stesso è vero per la grafica di ggplot2 e la grafica di Trellis in S-Plus). Il metodo print () per l’object grafico produce la visualizzazione effettiva. Quando si utilizzano queste funzioni in modo interattivo alla riga di comando, il risultato viene stampato automaticamente, ma in source () o all’interno delle proprie funzioni è necessaria un’istruzione print () esplicita.

Esempio del caso

  1. visualise.r
    • chiama plot2this.r
      • chiama ggplot2 e restituisce p object

Qui la correzione nella funzione plot2this.r da return(p) a return(print(p)) .

plot2this.r iniziale2this.r

 p <- ggplot(dat.m, aes(x = Vars, y = value, fill=variable)) return(p) 

fissare

 p <- ggplot(dat.m, aes(x = Vars, y = value, fill=variable)) return(print(p)) 

Uscita ora: uscita prevista con la trama desiderata.