2011-07-21 5 views
6

que comenzó a usar el paquete gráfico lattice pero tropezó en un problema. Espero que alguien pueda ayudarme. Quiero trazar un histograma usando la función correspondiente.R celosía paquete no trazará si de ejecución mediante la fuente()

Aquí está el archivo foo.r:

library("lattice") 

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() 

Cuando ejecuto el código usando R --vanilla < foo.r funciona todo bien.

Sin embargo, si uso un segundo archivo con bar.r

source("bar") 

y ejecutar el código R --vanilla < bar.r produce un archivo PDF errónea. Ahora descubrí que source("bar", echo=TRUE) resuelve el problema. ¿Que esta pasando aqui? ¿Es esto un error o me estoy perdiendo algo?

estoy usando R versión 2.13.1 (2011-07-08) con lattice_0.19-30

Respuesta

15

Es en el FAQ for R - que necesita print() alrededor de la función de celosía se llama:

7.22 ¿Por qué no funcionan celosía/gráficos enrejado?

La razón más probable es que usted se olvidó de decirle R para visualizar el gráfico . funciones de celosía como xyplot() crear un objeto gráfico, pero no muestran que (lo mismo es cierto de gráficos ggplot2, y Trellis gráficos en S-Plus). El método print() para el objeto gráfico produce la pantalla actual. Al utilizar estas funciones de forma interactiva en la línea de comandos , el resultado se imprime de forma automática, pero en la fuente() o dentro de sus propias funciones, necesitará una impresión explícita() comunicado.

+1

Wow, eso fue rápido!Me llevó mucho tiempo descubrir cuál era el problema real. ¡Muchas gracias! Esto funciona: '... print (histograma (~ RT | factor (Tipo), data = data)) ...' – woobert

+0

Debería ser aplicable a la función 'plot()' del paquete 'graphics' ? Estoy viendo un comportamiento similar, pero esto no parece arreglarlo ... – naught101

+1

Ahh. 'plot' funciona * sin * la instrucción de impresión, pero debe usar dev.new() o similar antes de trazar. – naught101

0

ejemplo del caso

  1. visualise.r
    • llamadas plot2this.r
      • llamadas ggplot2 y devuelve p objeto

Aquí el punto de referencia en la función plot2this.rreturn(p)-return(print(p)).

inicial plot2this.r

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

Fix

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

salida ahora: salida esperada con la trama deseada.

Cuestiones relacionadas