Я работаю над некоторыми учебниками по R. Каждый код R содержится в определенной папке. Там есть файлы данных и другие файлы. Я хочу открыть .r
файл и получить его так, чтобы мне не приходилось менять рабочий каталог в Rstudio, как показано ниже:
Есть ли способ автоматически указать мой рабочий каталог в R.
r
automation
working-directory
Стат-R,
источник
источник
?setwd
?getwd
load
.rdata-файлы в одной папке, а неsource
с рабочим каталогом, установленным на путь к исходному файлу.Ответы:
Чтобы получить местоположение исходного сценария, вы можете использовать
utils::getSrcDirectory
илиutils::getSrcFilename
. Таким образом, изменить рабочий каталог на каталог текущего файла можно с помощью:Это не работает в RStudio, если вы запустите код, а не его исходный код . Для этого вам нужно использовать
rstudioapi::getActiveDocumentContext
.Это второе решение требует, конечно, использования RStudio в качестве IDE.
источник
Error: 'getActiveDocumentContext' is not an exported object from 'namespace:rstudioapi'
getActiveDocumentContext()
в консоли в RStudio путь указывается как''
. Однако, если вы запустите строку кода в редакторе, она будет выполняться должным образом. Это может быть связано с комментарием @Andrurstudioapi
пакета. Попробуйте обновиться до последней версии.Я знаю, что этот вопрос устарел, но я тоже искал решение для этого, и Google перечисляет его в самом верху:
поместите это где-нибудь в файл (хотя лучше всего было бы начало), чтобы wd изменялся в соответствии с этим файлом.
Согласно комментариям, это может не обязательно работать на каждой платформе (Windows, похоже, работает, Linux / Mac для некоторых). Имейте в виду, что это решение предназначено для «поиска» файлов, а не обязательно для запуска фрагментов в этом файле.
см. также получить имя файла и путь к файлу `source`d
источник
Error in dirname(parent.frame(2)$ofile) : a character vector argument expected
работает для меня, но если вы не хотите использовать rstudioapi и не участвуете в проекте, вы можете использовать символ ~ в своем пути. Символ ~ относится к рабочему каталогу RStudio по умолчанию (по крайней мере, в Windows).
Если ваш рабочий каталог RStudio - "D: / Documents",
setwd("~/proyect1")
он совпадает с setwd («D: / Documents / proyect1»).После того, как вы установили , что вы можете перейти в подкаталог:
read.csv("DATA/mydata.csv")
. То же, что иread.csv("D:/Documents/proyect1/DATA/mydata.csv")
.Если вы хотите перейти к родительской папке, вы можете использовать
"../"
. Например:read.csv("../olddata/DATA/mydata.csv")
это то же самое, что иread.csv("D:/Documents/oldata/DATA/mydata.csv")
Для меня это лучший способ писать сценарии, независимо от того, какой компьютер вы используете.
источник
Этот ответ может помочь:
Я нашел его в: https://support.rstudio.com/hc/communities/public/questions/200895567-can-user-obtain-the-path-of-current-Project-s-directory-
Ответ BumbleBee (с parent.frame вместо sys.frame) мне не помог, я всегда получаю сообщение об ошибке.
источник
Для rstudio вы можете автоматически установить свой рабочий каталог в каталог сценария, используя rstudioapi следующим образом:
Это работает при запуске или загрузке файла.
Сначала вам нужно установить пакет rstudioapi. Обратите внимание, я печатаю путь, чтобы быть на 100% уверенным, что нахожусь в нужном месте, но это необязательно.
источник
Решение
не работает для меня.
Я использую алгоритм грубой силы, но работает:
Более простой поиск в каталоге:
источник
Если вы работаете в Linux, вы можете попробовать следующее:
setwd(system("pwd", intern = T) )
Меня устраивает.
источник
pwd
также работает в PowerShell (который в настоящее время считается оболочкой по умолчанию в Windows), где он является псевдонимом дляGet-Location
.Я просто искал решение этой проблемы, зашел на эту страницу. Я знаю, что он устарел, но предыдущие решения меня не устраивали или не работали. Вот моя работа, если интересно.
источник
setwd( dirname(filepath) )
?Я понимаю, что это старый поток, но у меня была аналогичная проблема с необходимостью установить рабочий каталог, и я не мог заставить какое-либо из решений работать на меня. Вот что сработало, на случай, если кто-то еще наткнется на это позже:
Это немного запутано, но в основном здесь используются системные команды для получения рабочего каталога и сохранения его в dummyfile.txt, затем R читает этот файл с помощью data.table :: fread. Остальное - это просто очистка того, что было напечатано в файле, чтобы у меня остался только путь к каталогу.
Мне нужно было запустить R в кластере, поэтому не было возможности узнать, в каком каталоге я окажусь (заданиям присваивается номер и вычислительный узел). Это помогло мне.
источник
Я понимаю, что это устарело, но я не мог заставить предыдущие ответы работать очень удовлетворительно, поэтому я хотел внести свой метод на случай, если кто-то еще столкнется с той же ошибкой, что и в комментариях к ответу BumbleBee.
Моя основана на простой системной команде. Все, что вы скармливаете функции, - это имя вашего скрипта:
Результат функции будет выглядеть так
"/Users/you/Path/To/Script"
. Надеюсь, это поможет любому, кто застрял.источник
here
Пакет обеспечиваетhere()
функцию, которая возвращает свой проект корневого каталога на основе некоторых эвристик.Не идеальное решение, так как он не находит местоположение сценария, но для некоторых целей этого достаточно, поэтому я решил поместить его здесь.
источник
here::set_here()
в источник.Большинство графических интерфейсов пользователя предполагают, что если вы находитесь в каталоге и «открываете», дважды щелкаете мышью или иным образом пытаетесь выполнить файл .R, то каталог, в котором он находится, будет рабочим каталогом, если не указано иное. Графический пользовательский интерфейс Mac предоставляет метод для изменения этого поведения по умолчанию, которое можно изменить на панели «Запуск» настроек, которые вы устанавливаете в текущем сеансе, и которое вступит в силу при следующем «запуске». Вы также должны смотреть на:
В документации RStudio говорится:
«При запуске через файловую ассоциацию RStudio автоматически устанавливает рабочий каталог на каталог открытого файла». По умолчанию RStudio регистрируется как обработчик для файлов .R, хотя есть также упоминание о возможности установить "ассоциацию" по умолчанию с RStudio для расширений .Rdata и .R. Я не могу сказать, являются ли статусы «обработчик» и «ассоциация» одинаковыми в Linux.
http://www.rstudio.com/ide/docs/using/workspaces
источник
у меня тоже не работает, но следующее (как предлагается в https://stackoverflow.com/a/35842176/992088 ) работает для меня в ubuntu 14.04
источник
Error: 'getActiveDocumentContext' is not an exported object from 'namespace:rstudioapi'
также в Ubuntu 14.04Если вы используете кодировку UTF-8:
Вам необходимо установить пакет rstudioapi, если вы еще этого не сделали.
источник
Вот еще один способ сделать это:
источник