У меня есть функция выбора файлов, используя file.choose()
. Когда я вызываю его внутри скрипта, я хочу открыть определенный каталог, в котором я хочу выбрать файлы. Внутри функции есть цикл, так как мне нужно выбрать кучу файлов. Первый раз он открывается в рабочем каталоге, что предсказуемо. Я поместил setwd()
внутрь, чтобы сделать нужный каталог рабочим, чтобы я мог выбирать файлы там. Но когда диалоговое окно открывается в следующий раз, это снова старый рабочий каталог. Но в следующий раз это каталог, который мне нужен. Если я выбираю разные папки, он работает так же - в следующий раз старый каталог, но после этого новый. Я написал короткую функцию, которая воспроизводит поведение:
foo <- function() {
files <- NULL
for (i in c(1,2,3,4,5)) {
x <- file.choose()
y <- dirname(x)
setwd(y)
print(y)
print(getwd())
}
}
Просто вызовите эту функцию и попробуйте выбрать файлы в разных или одинаковых каталогах. Вы видите, что имя каталога новое, а getwd()
говорит, что установлен новый рабочий каталог, но в предыдущем каталоге открывается диалоговое окно выбора следующего файла. Помните, что мне нужно использовать функцию file.choose (), так как она работает в безголовых ОС, как в Windows, так и в Unix-подобных. Когда я не использую setwd()
, это всегда старый рабочий каталог.