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
visualise.r
plot2this.r
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.