Я хотел бы установить рабочий каталог на путь текущего script программно, но сначала мне нужно получить путь к текущему script.
Итак, я хотел бы иметь возможность сделать:
current_path = ...retrieve the path of current script ...
setwd(current_path)
До сих пор я пытался:
initial.options <- commandArgs(trailingOnly = FALSE)
file.arg.name <- "--file="
script.name <- sub(file.arg.name, "", initial.options[grep(file.arg.name, initial.options)])
script.basename <- dirname(script.name)
script.name возвращает NULL
source("script.R", chdir = TRUE)
Возвращает: Ошибка в файле (имя файла, "r", кодирование = кодировка): не удается открыть соединение Дополнительно: Предупреждающее сообщение: В файле (имя файла, "r", encoding = encoding): невозможно открыть файл '/ script.R': нет такого файла или Каталог
dirname(parent.frame(2)$ofile)
Возвращает: ошибка в dirname (parent.frame(2) $ofile): ожидаемый аргумент символьного символа... потому что parent.frame имеет значение null
frame_files <- lapply(sys.frames(), function(x) x$ofile)
frame_files <- Filter(Negate(is.null), frame_files)
PATH <- dirname(frame_files[[length(frame_files)]])
Возвращает: Нуль, потому что frame_files - это список 0
thisFile <- function() {
cmdArgs <- commandArgs(trailingOnly = FALSE)
needle <- "--file="
match <- grep(needle, cmdArgs)
if (length(match) > 0) {
# Rscript
return(normalizePath(sub(needle, "", cmdArgs[match])))
} else {
# 'source'd via R console
return(normalizePath(sys.frames()[[1]]$ofile))
}
}
Возвращает: ошибка в пути .expand(путь): недопустимый аргумент "путь"
Также я увидел все ответы здесь, здесь, здесь и здесь. Нет радости.
Работа с RStudio 1.1.383
EDIT: Было бы здорово, если бы не понадобилась внешняя библиотека для этого.