Ggplot qplot не выполняется при поиске

Предположим, что у меня есть 2 исходных файла, первый с именем example1.r и второй example2.r (приведенный ниже).

example1.r

plot(1:10,1:10)

example2.r

qplot(1:10,1:10)

Когда я источник example1.r, график рисуется. Однако это не так, когда я источник example2.r. Какое здесь решение?

(qplot в example2.r является ggplot2)

Ответ 1

Update:

  • .R файлы: source опция print.eval=TRUE приведет к печатанию результата оценки, как в интерактивной командной строке.

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

  • .Rnw файлы: knitr по умолчанию имитирует поведение интерактивной командной строки по. print ING. Обратите внимание, что knitr может быть указан как Sweaving engine также для виниловых папок R.


Это мой оригинальный ответ. Но обратите внимание, что это обходное решение IMHO полностью устарело (и это всегда было полезно только для небольшой ленивой ниши).

Это знаменитый FAQ 7.22: Почему графическая/решетчатая графика не работает?.

Для сетчатой ​​графики, такой как ggplot2 или решетка, вам нужно распечатать графический объект, чтобы на самом деле его нарисовать.

Интерактивно в командной строке это делается автоматически. Всюду (внутри файлов, которые должны быть получены, циклы, функции, Sweave chunks) вам нужно распечатать его явно.

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

В качестве альтернативы вы можете переопределить qplot для печати:

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

(это изменяет метки оси на x и y).

Я использую этот подход в виньетках, где я хочу писать код точно так же, как пользователь в интерактивном сеансе будет его печатать.