如何从其他包导入数据

时间:2017-02-22 15:59:30

标签: r

我有一个包(比如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正确导入,为什么不是数据呢?我应该以某种方式导出数据吗?

0 个答案:

没有答案