У меня есть один пакет (скажем testpackage1
), который содержит метод, называемый readData()
.Как импортировать данные из другого пакета
Этот метод считывает файл test.data.rda
, который помещается в папку данных testpackage1
и после некоторых операций возвращает фрейм данных.
Это единственный R файл в testpackage1
:
#' Reads data and transforms it
#'
#' @return a data.frame
#' @export
#'
#' @examples my.df <- readData()
readData <- function() {
return(subset(test.data, x < 50))
}
initPackage <- function() {
test.data <- data.frame(x = seq(1, 100),
y = seq(101, 200))
devtools::use_data(test.data, overwrite = TRUE)
}
Вызов метода initPackage
создает фрейм данных и сохраняет его в качестве .rda файла в папке данных.
Теперь я создал второй пакет с именем testpackage2
, который также имеет только один R файл:
#' Gets the data
#'
#' @import testpackage1
#' @export
#'
#' @examples hello()
hello <- function() {
print(testpackage1::readData())
}
Я построил оба пакета, а затем начал свежий R сессии и напечатал:
> library(testpackage2)
> hello()
Но у меня есть эта ошибка:
Error in subset(test.data, x < 50) : object 'test.data' not found
4. subset(test.data, x < 50) at hello.R#8
3. testpackage1::readData()
2. print(testpackage1::readData()) at hello.R#8
1. hello()
Если я печатаю require(testpackage1)
BEF рудный метод вызова hello()
, то он работает.
Но я думал, что загрузка testpackage2
автоматически загрузила бы его зависимости. Я мог бы добавить require(testpackage1)
в функцию hello()
, но он кажется лишним с оператором @import
.
Кроме того, readData()
Правильно импортирован, почему бы не данные? Должен ли я каким-то образом экспортировать данные?