Ответ 1
Я недавно столкнулся с этим вопросом и понял, что самым современным способом является вызов show(p)
после создания сюжета.
У меня странная проблема с Rstudio: если script вызывает функции ggplot2 для отображения графика, то использование источника для запуска script не дает графиков. Если я выберу целую script с помощью Ctrl+A
, то запустите текущую строку или выбор (Ctrl+Enter
), затем отобразится график. Аналогично, ввод команд в консоль дает правильный результат.
Например:
library(ggplot2)
p = ggplot(mtcars, aes(wt, mpg))
p + geom_point()
Будет выдавать результат только при вставке в консоль, а не в исходном файле.
Есть и другие вопросы по этому поводу, но они не являются полезными:
dev.off()
не работает ( "Error in dev.off() : cannot shut down device 1 (the null device)
" )Как я могу заставить Rstudio отображать графики при получении script? Я использую Rstudio 0.98.1062 и R 3.1.1.
Я недавно столкнулся с этим вопросом и понял, что самым современным способом является вызов show(p)
после создания сюжета.
Решение состоит в явном вызове 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), и график показывает как ожидалось