Чтобы помочь себе с отображением отладочной информации, я решил создать следующую крошечную функцию, которая динамически переключалась бы между отображением данных во внутреннем браузере данных RStudio и простым символьным выводом, в зависимости от возможностей. платформы, откуда берутся мои модули:
View <- function (...) {
if (.Platform$GUI == "RStudio")
View(...)
else
print(...)
}
Эта функция находится вместе с другими служебными функциями в модуле <PROJ_HOME>/utils/debug.R
. Все модули, которым нужны эти функции, подключайте через source("../utils/debug.R")
.
Запуск кода моего проекта на консоли Linux инстанса Amazon EC2 работает нормально. Однако запуск его на той же виртуальной машине через RStudio Server приводит к следующему сообщению об ошибке:
Error: evaluation nested too deeply: infinite recursion / options(expressions=)?
Error during wrapup: evaluation nested too deeply: infinite recursion / options(expressions=)?
Мне кажется, что R запутался в том, какую функцию View()
нужно вызывать. Первоначально я предположил, что RStudio перегружает utils::View()
, и попытался вызвать его явно, но это не удалось. Тогда я подумал, что RStudio каким-то образом определяет свою View()
реализацию в глобальном окружении, так что ее просто нужно называть View()
без ссылки на пакет/библиотеку. Однако, как я вижу, это тоже не работает. Другая потенциальная причина ошибки может заключаться в том, что я переоценил «умность» R с точки зрения использования ...
аргументов.
Итак, что не так и как это исправить?
utils::View(...)
вызывать, но это приводит к следующей ошибке и предупреждению:"Error in .External2(C_dataviewer, x, title) : invalid device In addition: Warning message: In utils::View(...) : unable to open display"
. Это запускает мой код в RStudio Server. - person Aleksandr Blekh   schedule 11.03.2014