#r #command-line-arguments #directory #rscript
#r #аргументы командной строки #каталог #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"
Комментарии:
1. Вы проверили, существует ли каталог, который вы пытаетесь изменить. Можете ли вы опубликовать свой код?
2. Кроме того, не рекомендуется менять каталог внутри скрипта.
3. @agstudy: Полностью согласен.
4. Почему бы просто не поместить их все в один каталог?
5. Использование setwd() в скрипте вполне нормально, если в верхней части скрипта явно указано, что любой общий пользователь должен использовать свой собственный соответствующий каталог.
Ответ №1:
Попробуйте это:
# 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))
Ответ №2:
Невозможно дать вам конкретный ответ, поскольку вы не предоставляете ключевые части своего скрипта. Чтобы упростить устранение неполадок, начните с добавления полного физического пути к каталогу, который вы хотите изменить. Это для обеспечения того, чтобы полный путь работал.
Общие рекомендации.
Наиболее структурированный способ — поместить файл [.Rprofile] в каталог, в котором будет запущен ваш Rscript. Локальный [.Rprofile] будет считан, когда Rscript инициирует сеанс терминала R. В [.Rprofile] вам нужно добавить [setwd(‘/yourpath’) . Это предполагается, если вы просто хотите установить wd при запуске.
Если вам нужно изменить [setwd] в ходе выполнения вашего скрипта / ов, вы, конечно, можете включить их в R-файлы. Помните, однако, что Rstudio и R terminal ведут себя по-разному, когда дело доходит до [загрузка / сохранение]. Rstudio действует динамически, когда вы что-то меняете через его консоль, и показывает изменения непосредственно в окне глобальной среды.
Для запуска Rscript с терминала вам нужно будет убедиться, что для каждого скрипта вы добавляете [load / save] для R, чтобы компенсировать потерю среды, когда она не находится в запущенном сеансе с Rscript.
Важно иметь в виду разницу в поведении между Rstudio и R terminal, особенно если вы тестируете сценарии в Rstudio и ожидаете, что они будут работать так же, как и в R-terminal.