包开发:如何从包中导入数据、转换数据并将其重新导出为数据集?
Package development: How can I import data from a package, transform it, and rexport as a data set?
使用 roxygen2 框架如何从另一个包导入数据集,执行更改,然后将数据集重新导出为我自己的数据集包裹?
根据我导出数据集的经验,可以通过保存 .rda 文件(通常使用 save
函数)手动执行此过程。我想让它更具动态性,因此如果其他包在人们更新依赖包时更新数据集,我的包将相应地更新其数据集。
例如,假设我想从 tidytext 导入 stop_words
数据集,删除 SMART
类型的词典并重新导出为 stop_words2
.有没有办法做到这一点?当 data(package = 'MyPackage')
显示重新导出的数据集时,我会知道此解决方案有效。
我的尝试无效(data(package =
即使数据可访问也无效):
#' Various lexicons for English stop words
#'
#' English stop words from three lexicons, as a data frame.
#' The onix sets are pulled from the tm package. Note
#' that words with non-ASCII characters have been removed. THis
#' is a reimport from the \pkg{tidytext} package's \code{stop_words}
#' data set but with the SMART lexicon filtered out.
#'
#' @format A data frame with 578 rows and 2 variables:
#' \describe{
#' \item{word}{An English word}
#' \item{lexicon}{The source of the stop word. Either "onix" or "snowball"}
#' }
#' @usage data(sam_i_am2)
#' @export
stop_words2 <- tidytext::stop_words[tidytext::stop_words[['lexicon']] != 'SMART', ]
我认为这是不可能的,因为 data()
仅在子目录 data/
中搜索,该子目录不是重新导出放置数据对象的位置。
但是,如果您放弃此 objective,那么您仍然可以访问新数据对象 ,就好像 它是一个 "lazy loaded" 数据集一样。但需要明确的是,使用 data(stop_words2, package = "MyPackage")
.
这将不起作用
#' Various lexicons for English stop words
#'
#' English stop words from three lexicons, as a data frame. The onix sets are
#' pulled from the tm package. Note that words with non-ASCII characters have
#' been removed. This is a reimport from the \pkg{tidytext} package's
#' \code{stop_words} data set but with the SMART lexicon filtered out.
#' @inherit tidytext::stop_words title description source references
#' @export
stop_words2 <- tidytext::stop_words[tidytext::stop_words[["lexicon"]] != "SMART", ]
注意 roxygen2 使用回收原始文档组件。
考虑使用 stopwords package,其中包含 SMART 字词等等。
使用 roxygen2 框架如何从另一个包导入数据集,执行更改,然后将数据集重新导出为我自己的数据集包裹?
根据我导出数据集的经验,可以通过保存 .rda 文件(通常使用 save
函数)手动执行此过程。我想让它更具动态性,因此如果其他包在人们更新依赖包时更新数据集,我的包将相应地更新其数据集。
例如,假设我想从 tidytext 导入 stop_words
数据集,删除 SMART
类型的词典并重新导出为 stop_words2
.有没有办法做到这一点?当 data(package = 'MyPackage')
显示重新导出的数据集时,我会知道此解决方案有效。
我的尝试无效(data(package =
即使数据可访问也无效):
#' Various lexicons for English stop words
#'
#' English stop words from three lexicons, as a data frame.
#' The onix sets are pulled from the tm package. Note
#' that words with non-ASCII characters have been removed. THis
#' is a reimport from the \pkg{tidytext} package's \code{stop_words}
#' data set but with the SMART lexicon filtered out.
#'
#' @format A data frame with 578 rows and 2 variables:
#' \describe{
#' \item{word}{An English word}
#' \item{lexicon}{The source of the stop word. Either "onix" or "snowball"}
#' }
#' @usage data(sam_i_am2)
#' @export
stop_words2 <- tidytext::stop_words[tidytext::stop_words[['lexicon']] != 'SMART', ]
我认为这是不可能的,因为 data()
仅在子目录 data/
中搜索,该子目录不是重新导出放置数据对象的位置。
但是,如果您放弃此 objective,那么您仍然可以访问新数据对象 ,就好像 它是一个 "lazy loaded" 数据集一样。但需要明确的是,使用 data(stop_words2, package = "MyPackage")
.
#' Various lexicons for English stop words
#'
#' English stop words from three lexicons, as a data frame. The onix sets are
#' pulled from the tm package. Note that words with non-ASCII characters have
#' been removed. This is a reimport from the \pkg{tidytext} package's
#' \code{stop_words} data set but with the SMART lexicon filtered out.
#' @inherit tidytext::stop_words title description source references
#' @export
stop_words2 <- tidytext::stop_words[tidytext::stop_words[["lexicon"]] != "SMART", ]
注意 roxygen2 使用回收原始文档组件。
考虑使用 stopwords package,其中包含 SMART 字词等等。