Есть ли предопределенное место, где R-пакет может хранить кэшированные данные? Данные должны сохраняться в течение сеансов. Я думал о создании подкаталога ${R_LIBS_USER}/package_name
, но я не уверен, что он переносимый, и если это "разрешено", если мой пакет установлен в системе.
Идея следующая: Создайте R script mydata.R
в подкаталоге data
пакета, который будет выполнен, вызвав data(mydata)
(согласно документации data()
). Этот script будет загружать данные из Интернета и кэшировать его, если он ранее не кэшировался. (Если данные уже кэшированы, кэш будет использоваться.) Кроме того, будет предоставлена функция для недействительности кеша и/или проверки доступности новой версии данных в Интернете.
Это из документации data()
:
В настоящее время поддерживаются четыре формата файлов данных:
файлы, заканчивающиеся на .R или '.r, являются source() d in, а рабочий каталог R временно изменен в каталог, содержащий соответствующий файл. (данные гарантируют, что пакет utils подключен, если он был запущен через utils:: data.)
...
В самом деле, создав файл fortytwo.R
в подкаталоге data
пакета со следующим содержимым:
fortytwo = data.frame(answer=42)
а затем выполнение data(fortytwo)
создает переменную фрейма данных fortytwo
. Теперь возникает вопрос: где бы fortytwo.R
кэшировать данные, если их было сложно вычислить?
EDIT. Я думаю о создании двух пакетов: "пакет данных", который предоставляет данные, и пакет "code", который работает на нем. Вопрос касается пакета данных: где он может хранить файлы в хранилище для каждого пользователя, чтобы он был постоянным в R-сессиях и доступен из разных R-проектов?
Связанный: Пакет, который загружает данные из Интернета во время установки.