Как вы обрабатываете данные R, внутренние для пакета?

пакет R, который я разрабатываю, требует нескольких объектов данных R, таких как предварительно вычисленные модели и параметры.

В настоящее время у меня есть каждый объект в каталоге "данные" пакета в индивидуальном порядке .Файлы RData. При использовании пакета пользователи могут использовать функцию" данные " для присоединения этих объектов к своей среде.

поведение, которое я хотел бы вместо этого, было бы тем, что при загрузке пакета объекты данных автоматически присоединяются к внутреннему пакету окружающая среда и не доступна пользователю напрямую.

Я понимаю, что размещение ' sysdata.файл rda в каталоге " R "пакета, содержащего объекты, находящиеся в настоящее время в "data", даст мне желаемый результат. Однако есть ли способ сделать это, чтобы каждый объект был в отдельном файле, а не сгруппирован вместе?

2 ответов


можно использовать .onLoad() крючок для вызова data() при загрузке пакета и укажите пространство имен пакета в качестве среды, в которую необходимо загрузить объекты данных.

если у вас есть файлы model1.R и mydata.RData на data/ каталог вашего пакета называется foopkg, определить функцию

.onLoad <- function(libname, pkgname) {
  data("model1", "mydata", package=pkgname, envir=parent.env(environment()))
}

где-то в вашем пакете (например, в foopkg-package.R).

после создания и установки пакета,

> library(foopkg)
> ls(loadNamespace("foopkg")) 

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


положить на