El qplot de ggplot no se ejecuta en el origen

Supongamos que tengo 2 archivos de origen, el primero llamado example1.r y el segundo example2.r (dado a continuación).

ejemplo1.r

 plot(1:10,1:10) 

ejemplo2.r

 qplot(1:10,1:10) 

Cuando obtengo el ejemplo 1.r, se dibuja el gráfico. Sin embargo, no lo hace cuando obtengo el ejemplo2.r. ¿Cuál es la solución aquí?

(qplot en example2.r es la función de ggplot2 )

Actualización :

  • Archivos .R: la opción de source print.eval=TRUE conducirá al comportamiento de impresión del resultado de la evaluación como en la línea de comando interactivo.

source("Script.R", print.eval=TRUE)

  • .Rnw files: knitr por defecto emula el comportamiento de la línea de comando interactiva wrt. print ing. Tenga en cuenta que knitr se puede especificar como motor de Sweaving también para viñetas de paquete R.

Esta es mi respuesta original. Pero tenga en cuenta que esta solución es en mi humilde opinión completamente obsoleta ahora (y siempre fue bueno para un pequeño nicho perezoso solamente).

Esta es la famosa pregunta frecuente 7.22: ¿Por qué los gráficos de celosía / enrejado no funcionan? .

Para gráficos de cuadrícula como ggplot2 o celosía, debe imprimir el objeto de gráficos para dibujarlo.

Interactivamente en la línea de comando esto se hace automáticamente. En cualquier otro lugar (dentro de los archivos para ser fuente, bucles, funciones, trozos de Sweave), debe imprimirlo de manera explícita.

 print (qplot (1 : 10, 1 : 10)) 

Alternativamente, puede redefinir qplot para hacer la impresión:

 qplot <- function (x, y = NULL, z = NULL, ...) { p <- ggplot2::qplot (x = x, y = y, z = z, ...) print (p) } 

(Esto cambia las tags del eje a xey).

Utilizo este enfoque en viñetas en las que quiero escribir el código exactamente como lo escribiría un usuario en una sesión interactiva.