Какие существуют методы для распределения полуживого набора данных с пакетом R?
Я создаю пакет для внутреннего использования, используя devtools
. Я хотел бы иметь загрузку пакета в данные из файла/соединения (который отличается в зависимости от пакета даты). Данные являются большими, поэтому предпочтительнее использовать синтаксический анализ и загрузку данных во время сборки пакета.
В настоящее время у меня есть файл data.R в разделе R/
, который присваивает данные переменным уровня пакета, значения присваиваются во время установки пакета (или, по крайней мере, то, что, как представляется, происходит). В основном это менее идеальная настройка. Чтобы все экземпляры пакета имели одни и те же данные, я должен распространять файл данных с пакетом (в настоящее время он копируется в inst/
хелпером script перед созданием пакета) вместо того, чтобы просто иметь его все быть упакованы вместе. Должен быть лучший способ.
Например:
- Генерировать .rda файлы во время сборки пакета (но для этого не требуется выполнение одного и того же кода во время установки пакета)
- Я могу сделать это с помощью Makefile, но это похоже на overkill
- Можно ли использовать R-код, который запускается только во время сборки пакета, а не во время установки?
- Запустить R-код в
data/
- Но данные обрабатываются с использованием кода в рассматриваемом пакете. Я могу исправить это с помощью
Collate
(я думаю), но тогда мне нужно поддерживать порядок всех файлов .R
(но с этой дополнительной сложностью я мог бы также использовать Makefile?)
- Создайте два пакета, один со всем кодом, который я хочу, с данными.
- Очевидные, умные вещи, о которых я не думал.
tl; dr: Каковы некоторые методы для добавления моментального снимка динамически изменяющихся данных в пакет R, замороженный для развертывания?
Ответы
Ответ 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
.