Подтвердить что ты не робот

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

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

Например:

library(ggplot2)

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

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

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

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

4b9b3361

Ответ 1

Я недавно столкнулся с этим вопросом и понял, что самым современным способом является вызов show(p) после создания сюжета.

Ответ 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() по умолчанию выводит только сообщение об ошибке. Если вам нужно что-то еще, вы должны явно спросить об этом.

Ответ 3

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

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