Можно ли остановить `Rscript`, очищающий его `tempdir`?

Я использую R через Rscript и H2O, но H2O дает сбой. Я хочу просмотреть журналы, но tempdir R, содержащий их, похоже, удаляется после завершения сеанса R (т. е. после завершения Rscript).

Можно ли указать R/Rscript не удалять используемую папку tmp?


person dommer    schedule 07.01.2019    source источник
comment
Я думаю, что можно сохранить временный вывод - rstat.consulting /blog/temporary-dir-and-files-in-r может быть в паре с on.exit?   -  person Mike    schedule 07.01.2019
comment
@Mike Я смог использовать on.exit, чтобы обойти проблему, поэтому, если вы хотите опубликовать это как ответ, я приму это. Или я добавлю ответ через несколько дней. Спасибо.   -  person dommer    schedule 08.01.2019


Ответы (1)


Обойти это можно было бы с помощью on.exit, чтобы получить временные файлы и сохранить их в другом каталоге. Пример функции будет таким:

    ranfunction <- function(){
#Get list of files in tempdir
on.exit(templist <- list.files(tempdir(), full.names = T,pattern = "^file") )
#create a new directory for files to go on exit
#use add = T to add to the on.exit call
on.exit(dir.create(dir1 <- file.path("G:","testdir")),add = T  )
#for each file in templist assign it to the new directory   
on.exit(
      lapply(templist,function(x){
      file.create(assign(x, tempfile(tmpdir = dir1) ))})
  ,add=T)

}

ranfunction()

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

person Mike    schedule 08.01.2019
comment
@dommer Надеюсь, это поможет / похоже на то, что у вас есть. Мне было бы любопытно увидеть ваше решение. - person Mike; 08.01.2019
comment
Очень просто с моей стороны: on.exit(expr = file.copy(tempdir(), log_folder_path, recursive = TRUE)) - person dommer; 09.01.2019