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

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

пример1.r

plot(1:10,1:10)

example2.r

qplot(1:10,1:10)

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

(qplot в example2.r является функцией ggplot2)


person Grega Kešpret    schedule 13.07.2011    source источник


Ответы (1)


Обновление:

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

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

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


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

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

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

В интерактивном режиме в командной строке это делается автоматически. В любом другом месте (внутри исходных файлов, циклов, функций, фрагментов 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).

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

person cbeleites unhappy with SX    schedule 13.07.2011
comment
Незначительный момент: вам не нужно invisible(p), так как print(p) возвращает p. - person Richie Cotton; 13.07.2011
comment
Спасибо, Ричи, print (p) на самом деле возвращает invisible (p) - это то, что я хочу (если бы это было видно, использование его из командной строки произвело бы графики дважды). Отредактировал код соответственно. - person cbeleites unhappy with SX; 15.07.2011
comment
Спасибо за ваш ответ (+1)! Я сходил с ума, пытаясь понять это в течение нескольких часов. У меня есть еще два важных вопроса, если вы не возражаете: 1) Будет ли переопределение qplot(), показанное выше, хорошо работать с функциями наслоения ggplot2? 2) Нужно ли аналогичное переопределение для другой функции ggplot2, производящей вывод - ggplot()? - person Aleksandr Blekh; 24.05.2014
comment
@AleksandrBlekh: Там, где я до сих пор использовал этот подход, он работал. Но я использую его все реже и реже, так как почти никогда не использую файлы source .R, а вместо этого использую файлы .Rnw. Я почти полностью перешел на использование knitr вместо Sweave, а knitr по умолчанию эмулирует поведение print командной строки R, поэтому ответ для меня в значительной степени устарел. - person cbeleites unhappy with SX; 24.05.2014
comment
Я понимаю. Спасибо за комментарий! Однако я не понял вашего ответа по поводу ggplot - он тоже требует переопределения, как и для qplot? - person Aleksandr Blekh; 24.05.2014
comment
О, я вижу. Да, если вы используете ggplot () вместо qplot (), вы можете и должны применять ту же стратегию. - person cbeleites unhappy with SX; 24.05.2014
comment
Я попытался интегрировать ваш совет в среду моего проекта, и пока это не удалось. Я создал отдельный вопрос для этой проблемы: stackoverflow.com/questions/23851465/. Был бы очень признателен, если бы вы посмотрели и помогли! Спасибо! - person Aleksandr Blekh; 25.05.2014
comment
У меня немного похожая проблема, я вызываю R-скрипт с помощью Rscript, но, похоже, он не работает. Вот вопрос stackoverflow.com/questions/59181206/ - person Herman Toothrot; 05.12.2019