R setwd() «Ошибка при открытии файла — Система не может найти указанный файл»

#r #setwd

Вопрос:

У меня есть сценарий R, который должен изменить рабочий каталог с помощью setwd().

Мой код:

 setwd(file.path(work_dir, database_dir, study))
 

Я могу приостановить свой сценарий непосредственно перед тем, как эта строка должна быть выполнена (с помощью browser() ), введите код в консоль без проблем, но всякий раз, когда строка выполняется из сценария, я получаю сообщение об ошибке, в котором говорится, что «ошибка при открытии файла: система не может найти указанный файл». В моем сценарии перед вызовом setwd я подтвердил, что путь существует с помощью file.exists(file.path(work_dir, database_dir,study)) . Я также перезапустил R studio, закрыл и снова открыл все свои сценарии, чтобы убедиться, что это не было причиной проблемы.

У кого-нибудь есть еще какие-нибудь предложения, чтобы я попробовал?

Комментарии:

1. Может быть, я просто в замешательстве, но почему вы меняете свой рабочий каталог на путь к файлу ?

2. Функция file.path() создает путь к файлу из компонентов независимым от платформы способом. Я использовал его много раз раньше без проблем.

3. Если каталог не существует или вместо этого это файл, я получаю сообщение об ошибке cannot change working directory «нет cannot find «, предполагающее , что, возможно, эта строка не является ошибочной. (Кстати, я file.path все время использую для создания путей к каталогам, я думаю, что вместо этого имя функции может быть файл/каталог-агностик, например make.path или create.path или подобное … но все в порядке. Вместо этого вы можете использовать dir.exists вместо file.exists , это логически более соответствует вашим намерениям и приведет к ошибке, если это действительно файл, когда он должен быть каталогом.)

4. Я согласен, что это очень странно, что я получаю сообщение об ошибке «Ошибка при открытии файла». Я не знаю, что еще попробовать. Я даже удалил файл. путь и набрал путь только к первой вложенной папке вручную безрезультатно. Чего я действительно не понимаю, так это почему команда без проблем работает в консоли, но не будет работать из сценария.

Ответ №1:

Сообщение о том, как я решил эту проблему:

Сценарий, который изменил каталог (я назову этот сценарий 2), сначала был вызван другим сценарием (я назову этот сценарий 1). сценарий 1 и сценарий 2 находятся в одном каталоге, но в разных каталогах от того, где я пытался изменить. сценарий 1 называется сценарием 2 с использованием исходного кода(«script2.R»). Когда я изменил это на источник(путь к файлу(work_dir, «script2.R»)) У меня больше не было проблем с командой setwd (). Я ПРЕДПОЛАГАЮ, что, когда я менял каталоги, Rstudio «забыла», какой сценарий он должен был выполняться, и именно поэтому я получил ошибку «файл не существует».

Если у кого — то есть еще какие-то мысли- пожалуйста, поделитесь!