El enrejado del paquete R no se trazará si se ejecuta usando source ()

Empecé a usar el paquete gráfico de lattice , pero me encontré con un problema. Espero que alguien pueda ayudarme. Quiero trazar un histogtwig usando la función correspondiente.

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 este código usando R --vanilla < foo.r , todo funciona bien.

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

 source("bar") 

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

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

    Está en las preguntas frecuentes para R – necesita print() alrededor de la función de red que llama:

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

    La razón más probable es que olvidó decirle a R que muestre el gráfico. Las funciones de celosía como xyplot () crean un objeto gráfico, pero no lo muestran (lo mismo es cierto para los gráficos ggplot2 y los gráficos Trellis en S-Plus). El método print () para el objeto gráfico produce la visualización real. Cuando utiliza estas funciones interactivamente en la línea de comando, el resultado se imprime automáticamente, pero en el código fuente () o dentro de sus propias funciones necesitará una instrucción print () explícita.

    Ejemplo del caso

    1. visualise.r
      • llama plot2this.r
        • llama a ggplot2 y devuelve el objeto p

    Aquí la solución en la función plot2this.r desde return(p) para return(print(p)) .

    plot2this.r

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

    Fijar

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

    Salida ahora: salida esperada con la ttwig deseada.