Skip to content

Commit

Permalink
Merge 4ca8499 into 1eaa926
Browse files Browse the repository at this point in the history
  • Loading branch information
maurolepore committed Jan 23, 2019
2 parents 1eaa926 + 4ca8499 commit 3d4bdd5
Show file tree
Hide file tree
Showing 4 changed files with 93 additions and 1 deletion.
3 changes: 2 additions & 1 deletion DESCRIPTION
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ Suggests:
knitr,
rmarkdown,
spelling,
testthat
testthat,
MASS
Encoding: UTF-8
Language: en-US
LazyData: true
Expand Down
2 changes: 2 additions & 0 deletions NAMESPACE
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
# Generated by roxygen2: do not edit by hand

export(enframe_package_data)
export(list_any)
export(list_csv)
export(list_rdata)
export(list_rds)
export(list_tsv)
export(load_any)
export(load_csv)
export(load_package_data)
export(load_rdata)
export(load_rds)
export(load_tsv)
Expand Down
53 changes: 53 additions & 0 deletions R/load_package_data.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
#' Enframe datasets from an attached package or load them into an environment.
#'
#' @param x A character string giving the name of one package.
#' @inheritParams load_any
#'
#' @return
#' * `enframe_package_data()` returns a [tibble][tibble::tibble-package].
#' * `load_package_data()` returns invisible `x`.
#'
#' @export
#'
#' @examples
#' # Must be attached
#' library("MASS")
#'
#' enframe_package_data("MASS")
#'
#' e <- new.env()
#' load_package_data("MASS", envir = e)
#' ls(e)
#' str(e$snails)
load_package_data <- function(x, envir = .GlobalEnv) {
dts <- enframe_package_data(x)
list2env(rlang::set_names(dts$data, dts$name), envir = envir)
invisible(x)
}

#' @export
#' @rdname load_package_data
enframe_package_data <- function(x) {
name_title <- entitle(x)
lst_data <- mget(
name_title[["name"]],
envir = as.environment(paste0("package:", x))
)
name_data <- tibble::enframe(lst_data, name = "name", value = "data")
tibble::add_column(name_title, data = name_data$data)
}

entitle <- function(x) {
if (!is_attached(x)) {
rlang::abort("{x} must be attached (use `library()`).")
}
# FIXME: Fails with the "datasets" package.
rlang::set_names(
tibble::as_tibble(utils::data(package = x)$results[, c("Item", "Title")]),
c("name", "title")
)
}

is_attached <- function(x) {
any(grepl(paste0("package:", x), search()))
}
36 changes: 36 additions & 0 deletions man/load_package_data.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 3d4bdd5

Please sign in to comment.