Подтвердить что ты не робот

Какие существуют методы для распределения полуживого набора данных с пакетом R?

Я создаю пакет для внутреннего использования, используя devtools. Я хотел бы иметь загрузку пакета в данные из файла/соединения (который отличается в зависимости от пакета даты). Данные являются большими, поэтому предпочтительнее использовать синтаксический анализ и загрузку данных во время сборки пакета.

В настоящее время у меня есть файл data.R в разделе R/, который присваивает данные переменным уровня пакета, значения присваиваются во время установки пакета (или, по крайней мере, то, что, как представляется, происходит). В основном это менее идеальная настройка. Чтобы все экземпляры пакета имели одни и те же данные, я должен распространять файл данных с пакетом (в настоящее время он копируется в inst/ хелпером script перед созданием пакета) вместо того, чтобы просто иметь его все быть упакованы вместе. Должен быть лучший способ.

Например:

  • Генерировать .rda файлы во время сборки пакета (но для этого не требуется выполнение одного и того же кода во время установки пакета)
    • Я могу сделать это с помощью Makefile, но это похоже на overkill
    • Можно ли использовать R-код, который запускается только во время сборки пакета, а не во время установки?
  • Запустить R-код в data/
    • Но данные обрабатываются с использованием кода в рассматриваемом пакете. Я могу исправить это с помощью Collate (я думаю), но тогда мне нужно поддерживать порядок всех файлов .R (но с этой дополнительной сложностью я мог бы также использовать Makefile?)
  • Создайте два пакета, один со всем кодом, который я хочу, с данными.
  • Очевидные, умные вещи, о которых я не думал.

tl; dr: Каковы некоторые методы для добавления моментального снимка динамически изменяющихся данных в пакет R, замороженный для развертывания?

4b9b3361

Ответ 1

Как отмечает @BenBolker в комментариях выше, разделение набора данных на другой пакет имеет прецедент в сообществе (в первую очередь основной пакет datasets) и имеет дополнительные преимущества.

Разделение функций из данных также упрощает работу с историческими версиями данных с помощью современных функций.

В настоящее время у меня есть пакет tools-to-munge и things-to-munge. Используя вспомогательный script, я могу построить tools-to-munge и установить a Suggests (или Depends) в DESCRIPTION обоих пакетов, чтобы указать на соответствующую инкрементную версию пакетов. После того как новый пакет tools-to-munge был построен, я могу построить пакет things-to-munge по мере необходимости с помощью функций в пакете tools-to-munge.