Смена каталогов в Rscript
Как мне сделать, чтобы мои параметры Rscript меняли каталоги?
Если мой аргумент командной строки - Rscript test.R "foo1", я хочу setwd("~/foo1")
, но я получаю ошибку, что он не может изменить рабочий каталог.
args<-commandArgs(trailingOnly=TRUE)
lambda<args[1]
fileEnd<-args[2]
replicate<-args[3]
directory<-args[4]
setwd(directory)
Пример командной строки Rscript test.R 0 1 10 "~/foo1"
2 ответа
Попробуй это:
# use commandline arguments
args <- commandArgs(TRUE)
# the first argument is the working dir
working.dir <- args[1]
# change the working dir
setwd(file.path("~", working.dir))
Невозможно дать вам конкретный ответ, так как вы не предоставляете ключевые части вашего сценария. Чтобы упростить устранение неполадок, начните с добавления полного физического пути к тому, что вы хотите изменить каталог. Это гарантирует, что полный путь работает.
Общие предложения.
Наиболее структурированный способ - поместить файл [.Rprofile] в каталог, в котором вы будете запускать свой Rscript. Локальный [.Rprofile] будет прочитан, когда Rscript инициирует сеанс R-терминала. В [.Rprofile] вам нужно добавить [setwd('/yourpath'). Это предполагается, если вы просто хотите установить wd при запуске.
Если вам нужно изменить [setwd] во время ваших скриптов, вы, конечно, можете включить их в R-файлы. Помните, однако, что Rstudio и R-терминал ведут себя по-разному, когда дело доходит до [загрузить / сохранить]. Rstudio действует динамически, когда вы что-то изменяете через консоль и показываете изменения непосредственно в окне глобальной среды.
Для Rscript, запускаемого из терминала, вам необходимо убедиться, что для каждого сценария вы добавляете [load / save] для R, чтобы компенсировать, что он теряет среду, когда он не находится в рабочем сеансе с Rscript.
Важно помнить о различиях в поведении между Rstudio и R-терминалом, особенно если вы тестируете сценарии в Rstudio и ожидаете, что он будет работать аналогично в R-терминале.