Укажите каталог с помощью setwd()

Я понимаю, что в R для установки моего рабочего каталога я могу сделать:

setwd("~/dir1/dir2/mydir")

Если mydir является уникальным именем каталога, есть ли способ указать рабочий каталог без указания dir1/dir2 ?

Спасибо


person FairyOnIce    schedule 07.09.2012    source источник
comment
Я интерпретирую ваш вопрос как желание, чтобы компьютер автоматически находил каталог, что, вероятно, было бы сложно. Вам нужно будет использовать какой-то системный инструмент для поиска каталога (который будет другим и может существовать или не существовать в Windows, MacOS и Linux). В правильно настроенной системе Linux вы можете использовать что-то вроде setwd(system("locate mydirname",intern=TRUE)) ...   -  person Ben Bolker    schedule 07.09.2012


Ответы (1)


Sys.glob делает то, что вы хотите:

setwd(Sys.glob("~/*/*/mydir"))

Если вы не знаете, насколько глубоко он вложен, вы можете использовать list.files или dir:

list.files(path="~", pattern="mydir", all.files=TRUE, full.names=TRUE,
  recursive=TRUE, ignore.case=FALSE, include.dirs=TRUE)
person Joshua Ulrich    schedule 07.09.2012
comment
Вы должны быть в состоянии построить шаблон, который допускает произвольное количество косых черт, прежде чем он найдет mydir. Однако я не хочу выпускать его на своем устройстве. Мне нужно было прервать мои тесты с помощью list.dirs(). - person IRTFM; 08.09.2012
comment
Я не уверен в этом... onlinepubs/9699919799/utilities/, похоже, не допускает использования подвыражений в скобках (например, "~/(*/)+mydir" - person Ben Bolker; 08.09.2012