графики ggplot в скриптах не отображаются в Rstudio


У меня есть странная проблема с Rstudio: если скрипт вызывает функции ggplot2 для отображения сюжета, то использование Source для запуска сценария не приводит к созданию сюжетов. Если я выбираю весь сценарий с помощью Ctrl+A, то запускает текущую строку или выделение (Ctrl+Enter), тогда график действительно отображается. Аналогичным образом, ввод команд построения графика в консоль приводит к правильному выходу.

Например:

library(ggplot2)

p = ggplot(mtcars, aes(wt, mpg))
p + geom_point()

Будет производить вывод только при вставке в консоль, а не если источник.

Есть и другие вопросы по этому поводу, но ни один из них не полезен:

Как могу ли я получить Rstudio для отображения графиков, когда сценарий находится в исходном состоянии? Я использую Rstudio 0.98.1062 и R 3.1.1.

2 57

2 ответа:

Решение состоит в явном вызове print() объекта ggplot:

library(ggplot2)

p <- ggplot(mtcars, aes(wt, mpg))
p <- p + geom_point()
print(p)

ggplot функция возвращает объект класса ggplot; ggplot2 работает путем перегрузки функции print, чтобы вести себя по-другому на объектах класса ggplot-вместо того, чтобы печатать их в STDOUT, он создает диаграмму.

Все хорошо работает в интерактивном режиме, потому что R предполагает, что большинство команд выполняются через функцию print(). Это для нашего удобства и позволяет нам набрать rnorm(1) и получить любой видимый выход. Когда используется команда выполнить текущий выбор (Ctrl+Enter), RStudio ведет себя так, как если бы каждая выбранная строка была введена в интерактивном режиме и запущена. Вы можете проверить это, проверив историю команд в панели Console после выполнения нескольких выбранных строк.

Но этот удобный режим отбрасывается, когда файл читается source(). Поскольку эта функция предназначена для запуска (потенциально длинных и дорогостоящих в вычислительном отношении) R-скриптов, нежелательно загрязнять STDOUT низкоприоритетными сообщениями. Вот почему source() по умолчанию выводит только сообщение об ошибке. Если вы хотите чего-то еще, вы должны прямо попросить об этом.

Хотя это довольно старый вопрос. У меня была та же проблема, и я нашел быстрое решение, если вы хотите использовать кнопку "source" в окне редактирования R studio.

Вы можете просто включить "источник с Эхом" (Ctrl + Shift + Enter), и график будет показан, как и ожидалось