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

Есть ли способ отключить среду в RStudio?

Введение:

У меня есть проект RStudio, где я исследую (довольно) большие наборы данных. Хотя я пытаюсь сохранить глобальную среду чистой, через некоторое время она заполняется огромными объектами.

Проблема:

RStudio всегда обновляет среду после отладки (возможно, итерация глобальной среды и вызывает summary() для каждого объекта), и она занимает десятки секунд в моей глобальной среде. Хотя само обновление является асинхронным, сеанс R занят, и вы должны дождаться его завершения, прежде чем сможете продолжить работу. Это делает отладку очень раздражающей. И я не знаю, как отключить среду в RStudio.

Вопрос:

Может кто-нибудь предложить какое-нибудь красивое обходное решение? Я вижу следующие возможности:

  • Настройте источники RStudio, чтобы добавить параметр для отключения среды панель.
  • Часто чистая глобальная среда (не удобна, потому что сырые данные требуют много времени для предварительной обработки, и я часто меняю логику предварительной обработки).
  • Возможно, существуют определенные типы объектов, которые вызывают отставание не из-за их размера, а из-за их структуры?

Теперь я работаю над воспроизводимым примером, но не выясняет, какие объекты вызывают проблему.

Я уже некоторое время назад по электронной почте поддерживал RStudio об этой проблеме, но пока не получил ответа.

4b9b3361

Ответ 1

Я могу воспроизвести проблему с большим количеством небольших вложенных переменных списка.

# Populate global environment with lots of nested list variables
invisible(
  replicate(
    1000,
    assign(
      paste0(sample(letters, 10, replace = TRUE), collapse = ""),
      list(a = 1, b = list(ba = 2.1, bb = list(bba = 2.21, bbb = 2.22))),
      envir = globalenv()
    )
  )
)

f <- function() browser()

f() # hit ENTER in the console once you hit the browser

Это говорит о том, что проблема заключается в том, что RStudio использует свой эквивалент ls.str() в глобальной среде.

Я подозреваю, что поведение реализовано в одной из функций, перечисленных в ls("tools:rstudio", all.names = TRUE), но я не уверен, что. Если вы его найдете, вы можете переопределить его.

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

e <- new.env(parent = globalenv())

Затем присвойте все свои результаты внутри e. Таким образом, обновление занимает всего несколько микросекунд.

Ответ 2

Хотя это еще не доступно в общедоступном выпуске RStudio, ежедневные сборки RStudio v1.3 позволяют отключить автоматическое обновление панели среды:

Environment Pane Popup

Выбор " Manual Refresh Only отключит автоматическое обновление панели среды.