ggplot's qplot does not execute on sourcing

后端 未结 1 1249
旧巷少年郎
旧巷少年郎 2020-11-22 06:20

Let\'s assume I have 2 source files, the first one named example1.r and the second one example2.r (given below).

example1.r

相关标签:
1条回答
  • 2020-11-22 06:49

    Update:

    • .R files: source's option print.eval=TRUE will lead to printing behaviour of the evaluation result like in the interactive command line.

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

    • .Rnw files: knitr by default emulates the behaviour of the interactive command line wrt. printing. Note that knitr can be specified as Sweaving engine also for R package vignettes.


    This is my original answer. But note that this workaround is IMHO completely obsolete now (and it always was good for a small lazy niche only).

    This is the famous FAQ 7.22: Why do lattice/trellis graphics not work?.

    For grid graphics like ggplot2 or lattice, you need to print the graphics object in order to actually draw it.

    Interactively on the command line this is done automatically. Everywhere else (inside files to be sourced, loops, functions, Sweave chunks) you need to print it explicitly.

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

    Alternatively, you can redefine qplot to do the printing:

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

    (this changes the axis labels to x and y).

    I use this approach in vignettes where I want to write code exactly as a user in an interactive session would type it.

    0 讨论(0)
提交回复
热议问题