在 r 包中重新导出数据集
reexporting datasets in r packages
在 R
包中,可以重新导出函数。这使得回收相同的功能变得容易,而不必在不同的包中重复代码。
例如,devtools::session_info
函数是 sessioninfo::session_info
:
的再导出
#' @export
#' @importFrom sessioninfo session_info
sessioninfo::session_info
我想知道数据集是否也可以做类似的事情。我有两个不同的包,我在两个包中使用相同的数据集。这并不理想,因为如果我需要更改某些内容,我总是需要确保更改需要在两个包中进行,这增加了出错的可能性。
但我不知道如何实现。如果我这样做:
#' @export
#' @importFrom groupedstats Titanic_full
groupedstats::Titanic_full
我收到以下错误:
object 'Titanic_full' is not exported by 'namespace:groupedstats'
从 (https://github.com/IndrajeetPatil/groupedstats/blob/master/NAMESPACE) 开始就有意义了。但是这个数据集 是 存在于包中:
> vcdExtra::datasets("groupedstats")
Loading package: groupedstats
Item class dim Title
1 Titanic_full data.frame 2201x5 Titanic dataset.
2 intent_morality data.frame 4016x9 Moral judgments about third-party moral behavior.
3 movies_long data.frame 2433x8 Movie information and user ratings from IMDB.com (long format).
4 movies_wide data.frame 1813x14 Movie information and user ratings from IMDB.com (wide format).
因此,对于如何实现此类数据再导出的任何想法,或者如果这在 R
包中是不可能的,我将不胜感激。
以不同于函数命名空间的方式在加载的包中搜索数据,因此从技术上讲它不是导出。但是您可以重新导出另一个包的数据集,这将以相同的方式操作,但有一个例外:使用 data()
函数不会找到它,它只是在 data/
目录中搜索数据对象。下面的例子:
将 像 "lazy loaded" 数据集一样工作,例如myiris
如果您的包裹已附加,或使用 yourpackage::myiris
;
不会与data(myiris, package = "yourpackage")
一起工作。
#' @inherit datasets::iris description source references title
#' @examples
#' # works
#' testdata::myiris
#' # fails
#' data(myiris, package = "yourpackage")
#' @export
myiris <- datasets::iris
在 R
包中,可以重新导出函数。这使得回收相同的功能变得容易,而不必在不同的包中重复代码。
例如,devtools::session_info
函数是 sessioninfo::session_info
:
#' @export
#' @importFrom sessioninfo session_info
sessioninfo::session_info
我想知道数据集是否也可以做类似的事情。我有两个不同的包,我在两个包中使用相同的数据集。这并不理想,因为如果我需要更改某些内容,我总是需要确保更改需要在两个包中进行,这增加了出错的可能性。
但我不知道如何实现。如果我这样做:
#' @export
#' @importFrom groupedstats Titanic_full
groupedstats::Titanic_full
我收到以下错误:
object 'Titanic_full' is not exported by 'namespace:groupedstats'
从 (https://github.com/IndrajeetPatil/groupedstats/blob/master/NAMESPACE) 开始就有意义了。但是这个数据集 是 存在于包中:
> vcdExtra::datasets("groupedstats")
Loading package: groupedstats
Item class dim Title
1 Titanic_full data.frame 2201x5 Titanic dataset.
2 intent_morality data.frame 4016x9 Moral judgments about third-party moral behavior.
3 movies_long data.frame 2433x8 Movie information and user ratings from IMDB.com (long format).
4 movies_wide data.frame 1813x14 Movie information and user ratings from IMDB.com (wide format).
因此,对于如何实现此类数据再导出的任何想法,或者如果这在 R
包中是不可能的,我将不胜感激。
以不同于函数命名空间的方式在加载的包中搜索数据,因此从技术上讲它不是导出。但是您可以重新导出另一个包的数据集,这将以相同的方式操作,但有一个例外:使用 data()
函数不会找到它,它只是在 data/
目录中搜索数据对象。下面的例子:
将 像 "lazy loaded" 数据集一样工作,例如myiris
如果您的包裹已附加,或使用 yourpackage::myiris
;
不会与data(myiris, package = "yourpackage")
一起工作。
#' @inherit datasets::iris description source references title
#' @examples
#' # works
#' testdata::myiris
#' # fails
#' data(myiris, package = "yourpackage")
#' @export
myiris <- datasets::iris