qplot ggplot не выполняется при поиске - PullRequest
63 голосов
/ 13 июля 2011

Предположим, у меня есть 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 Ответ

77 голосов
/ 13 июля 2011

Обновление :

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

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

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


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

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

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

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

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

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

...