В настоящее время я выполняю некоторые симуляции, которые заполняют большие объемы памяти. К сожалению, gc()
и rm(list=ls())
не успешно освободили эту память на моей windows машине. Следовательно, мне пришлось искать способ перезапустить процесс, освободив память до windows. Я тратил несколько часов на форумы напрасно, так что вот мое рабочее решение для любых других пользователей, которые сталкиваются с той же проблемой.
Сохраняя итерацию как внешний файл и записывая rscript, который вызывает сам себя, сеанс может быть перезапущен в течение l oop из rstudio. В этом примере требуются следующие шаги:
Сохраните итерацию как отдельный файл .RData в рабочем каталоге.
iter <- 1
save(iter, file="iter.RData")
Создайте скрипт, который вызывает себя необходимое количество итераций. Сохраните следующий скрипт как «test_script.R»
###load iteration
library(rstudioapi)
load("iter.Rdata")
###insert function here.
time_now <- Sys.time()
###save output of function to a file.
save(time_now, file=paste0("time_", iter, ".Rdata"))
###update iteration
iter <- iter+1
save(iter, "iter.Rdata")
###restart session calling the script again
if(iter < 5){
restartSession(command='source("test_script.R")')
}
Наслаждайтесь!