Относительные пути в R: как избежать подгорания моего компьютера? - PullRequest
0 голосов
/ 22 ноября 2018

Некоторое время назад я читал статью об улучшении проекта workflow .Не рекомендуется использовать setwd, иначе мой компьютер будет гореть:

Если первая строка вашего R-скрипта будет

setwd ("C: \ Users \ jenny \ path\ that \ only \ I \ have ")

Я зайду в ваш офис и УСТАНОВУЮ ВАШ КОМПЬЮТЕР НА ПОЖАРЕ ?.

Я начал использовать пакет here, и он работалотлично, пока я не начал планировать сценарии, используя cronR.Задав этот вопрос, моему ноутбуку снова угрожали поджогом:

Если первая строка вашего скрипта #rstats - wd <- here (), я зайду в вашу лабораториюи установите компьютер на огонь. </p>

Опасаясь за безопасность своего ноутбука, я начал использовать метод, предложенный в ответе, чтобы получить относительные пути к файлам:

wd <- Sys.getenv("HOME")
wd <- file.path(wd, "projects", "my_proj") 

, который работал для меня, ноне люди, с которыми я работал, у которых не было такого же каталога projects.Так что теперь я в замешательстве.Какой самый безопасный / лучший способ получить относительные пути к файлам, чтобы проект мог быть переносимым?

Существует довольно много вариантов: 1 , 2 .Мои требования к исходным функциям / скриптам и чтению / записи CSV-файлов.Возможно, пакет rprojroot - лучший выбор?

Ответы [ 3 ]

0 голосов
/ 22 ноября 2018

Создайте проект RStudio, а затем укажите все файлы с относительными путями из корневой папки проекта.Таким образом, все пользователи откроют проект и автоматически получат правильный рабочий каталог.

0 голосов
/ 19 декабря 2018

Вы можете проверить документы пакета RSuite (https://RSuite.io).. Он работает с script_path, который указывает на текущий запущенный скрипт R. Я использую его для создания относительных путей, используя команду file.path

0 голосов
/ 22 ноября 2018

Существует много способов организации кода и данных для использования с R. Учитывая, что «поджигатель», описанный в OP, отклонил как минимум два подхода к поиску файлов проекта в сценарии R, лучший следующий шаг - спроситьПоджигатель, как он выполняет эту функцию, и соответственно скорректируйте ваш код и структуру файлов.

ОБНОВЛЕНИЕ: Поскольку «поджигателями», по-видимому, является тот, кто пишет на Tidyverse.org (см. Статью Tidyverse в OP) и отвечает на SO (см. Дополнительные ссылки в OP), вашкомпьютер кажется относительно безопасным.

Если вы делитесь кодом или выполняете его в пакетных процессах, где «пользователь» - это кто-то другой, кроме вас, полезный подход заключается в том, чтобы поместить код, данные и конфигурацию под управление версиями, и разработать runbook дляобъясните, как другие могут извлечь компоненты и запустить их на другом компьютере.

Как отмечается в комментариях к OP, с here::here() нет ничего плохого, если его использование можно сделать надежным с помощью документации в журнале заданий.

Я структурирую весь мой код R в Проекты в RStudio , которые организованы в каталог gitrepositories.Все проекты доступны в виде подкаталогов из каталога gitrepositories.Если мне нужно поделиться проектом, я делаю проект доступным для других пользователей на GitHub.

В моем коде R я ссылаюсь на внешние файлы как подкаталоги из корневого каталога проекта, такие как ./data/gen01.csv.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...