我有一个包(比如testpackage1
),其中包含一个名为readData()
的方法。
此方法读取放置在test.data.rda
数据文件夹中的testpackage1
文件,并在执行某些操作后返回数据框。
这是testpackage1
中唯一的R文件:
#' 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)
之前键入hello()
,那么它可以正常工作。
但我认为加载testpackage2
会自动加载其依赖项。我可以在require(testpackage1)
函数中添加hello()
,但@import
语句似乎是多余的。
此外,readData()
IS正确导入,为什么不是数据呢?我应该以某种方式导出数据吗?