Чтение системы TMP dir в R
Что такое кросс-платформенный метод для поиска временного каталога ОС из R? В настоящее время я использую:
dirname(tempdir())
который выполнил работу как на Ubuntu, так и на Windows из интерактивного сеанса R. Однако затем он потерпел неудачу при вызове изнутри RApache. В Рапаче значение tempdir()
всегда /tmp
, Так что dirname(tempdir())
результаты /
, что, очевидно, неправильно. Я тоже попробовал:
Sys.getenv("TMP")
Sys.getenv("TEMP")
Sys.getenv("TMPDIR")
как было предложено ?"environment variables"
но ни один из них не был установлен в Ubuntu. Он также, похоже, не установлено ни в одном из файлов в /etc/R/*
поэтому я не совсем понимаю, как определяет это значение.
1 ответов
переменные среды "TMPDIR", "TMP" и "TEMP" могут использоваться для изменения значения, возвращаемого tempdir()
если переменная C R_TempDir
не установлено (хотя я не уверен, как это делается). Если вы хотите кросс-платформенную функцию, которая вернет путь к разумному каталогу tmp и не интересуется значением R_TempDir
, вы могли бы использовать что-то вроде этого:
gettmpdir <- function() {
tm <- Sys.getenv(c('TMPDIR', 'TMP', 'TEMP'))
d <- which(file.info(tm)$isdir & file.access(tm, 2) == 0)
if (length(d) > 0)
tm[[d[1]]]
else if (.Platform$OS.type == 'windows')
Sys.getenv('R_USER')
else
'/tmp'
}
это основано на функции InitTempDir
в файле src / main / sysutils.c из источника R распределение, переведенное с C на R.