Как вы обрабатываете данные 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"))
должны продемонстрируйте, что различные объекты данных были успешно загружены в пространство имен пакета, т. е. видимы для функций в пакете, но не загрязняют глобальную среду.