From 75dbdb7bdbbd161c9a8afa78135b317c229d48ba Mon Sep 17 00:00:00 2001 From: jimrothstein Date: Tue, 17 Sep 2024 19:41:22 -0700 Subject: [PATCH] wip --- envir/9009_namespace_example.qmd | 328 ++++++------------------------- try_things_here.Rproj | 6 +- 2 files changed, 67 insertions(+), 267 deletions(-) diff --git a/envir/9009_namespace_example.qmd b/envir/9009_namespace_example.qmd index e3b6371..42c8e41 100644 --- a/envir/9009_namespace_example.qmd +++ b/envir/9009_namespace_example.qmd @@ -17,305 +17,105 @@ execute: ##------------------------------------- -## all attached packages vs search() +## HELP ```{r} -(.packages()) -search() +apropos("environment") +apropos("namespace") ``` -### getNamespace, returns environment +### all installed packages ```{r} -?help.start -?getAnywhere -argsAnywhere(derive_params) -getAnywhere(filter) -getAnywhere(ae) - -library(pkgload) -getNamespace("admiral") # namespace::admiral +installed.packages() +installed.packages() |> class() +ls() ``` -### objects in NameSpace -```{r} -ls(getNamespace("dplyr")) -ls(getNamespace("admiral")) -``` -### test, is object in ns? +## all attached packages vs search() ```{r} -z=ls(getNamespace("admiral")) +(.packages()) #22 +search() #24 +z=paste0("package:", .packages()) -c("slice_derivation") %in% z # TRUE -``` +z %in% search() +search()[!z %in% search()] +search()[!z %in% search()] +base::setdiff(z, search()) +``` -### ds in pkg +### getAnywhere (examine all loaded NS) ```{r} -data() # all loaded ds - -data(package = "admiral") # load ds in this pkg -search() - -c("admiral_adlb") %in% z +?getAnywhere +argsAnywhere(derive_params) +getAnywhere(filter) +getAnywhere(ae) -library(admiral) +# fct in pkg admiral +getAnywhere("count_vals") +getAnywhere(count_vals) -### char[] loaded namespaces -```{r} -loadedNamespaces() -sort(loadedNamespaces()) +argsAnywhere(derive_params) +getAnywhere(filter) +getAnywhere(ae) -?loadedNamespaces -requireNamespace("teal") +# fct in pkg admiral +getAnywhere("count_vals") +getAnywhere(count_vals) ``` -### unloadNamespace +## getNamespace, returns environment ```{r} -unloadNamespace("teal") # and removes search() -unloadNamespace("teal.slice") -loadedNamespaces() -search() - - -# put it back in. -library(teal) - - +?help.start +library(pkgload) +getNamespace("admiral") # Loads NS for admiral +isNamespaceLoaded("admiral") +unloadNamespace("admiral") ``` -### Given a ds, find package, pkg must be at least loaded -```{r} -?pharmaversesdtm -?admiral - -loadNamespace("pharmaversesdtm") -search() -loadedNamespaces() -data(package = "pharmaversesdtm") # loads +### objects in NameSpace +```{r} +ls(getNamespace("dplyr")) -?ae -help(ae) -findAnywhere("ae") +## Need better way ... +ls(getNamespace("admiral")) == "count_vals" # T +getAnywhere("count_vals") -unloadNamespace("pharmaversesdtm") ``` - - -### Given a package +### test, is object in ns? ```{r} +z=ls(getNamespace("admiral")) -library(pharmaversesdtm) -help("ae") -data(package="pharmaversesdtm") # many -data(package="pharmaversesdtm") |> class() # packageIQR? - -ls(getNamespace("pharmaversesdtm")) - - -``` - -?getNamespaceExports() -getNamespaceExports("dplyr") # 285 -getNamespaceExports("admiral") # 285 - -"db_commit" %in% getNamespaceExports("admiral") # 285 - -get - -?getNamespace -# returns named data.frame x, freq -getNamespaceExports("dplyr") %>% length() - -## ? -root <- rprojroot::is_r_package -root -root$find_file() -root$find_file("DESCRIPTION") -root$find_file("09009_namespace_example.Rmd") +c("slice_derivation") %in% z # TRUE ``` -# PURPOSE: misc tools for env, NS (namespace) -- getAnywhere() -- exists() -- makeActiveBinding -- assign() - -## assign variable x value in current env() +### Find data(), class packageIRQ ```{r} -ls() -assign("x", 10) # x must be quoted -ls() # x in envi -x # 10 -search() +# returns obj of class packageIRQ +data() |> class() +# data in one package +data(package = "tidyr") +# data in one package (not loaded) +isNamespaceLoaded("broom") # F +data(package = "broom") +isNamespaceLoaded("broom") # F ``` -## now assign higher in search() -## does not work -```{r} - -x=10 -assign("x", 100, "ESSR", inherits=T) -ls(parent.env(environment())) -getAnywhere(x) -search() - -## Given an object, base::getAnywhere() finds pkg, NS, and code +### Find all 'loaded' ds? means ...? ```{r} - - -utils::getAnywhere(aes) -getAnywhere(vapply) -getAnywhere(getAnywhere) -getAnywhere(.rs.restart) -getAnywhere(ae) -getAnywhere(sv) - ``` -## Code to probe namespace -REF: R-pkg v2 -NAMESPACE -chapter 11 -compare search() before/after adding package. - * before - * after loading a package -```{r search} -##------------------------------------- -### search path (shows attached pkgs) -##------------------------------------- -# -old <- search() -old +### ds in pkg +```{r} +data() # all loaded ds +data(package = "admiral") # ds in package admiral; will NOT load NS admiral +ls(getNamespace("admiral")) # will load NS admiral -# will not attach admiral -admiral::ae_event -search() -base::setdiff(search(),old) -##------------------------------------- -# To load AND attach -##------------------------------------- -library(tinytest) -new <- search() -``` -```{r namespaces} -# show loaded -?loadedNamespaces -loadedNamespaces() isNamespaceLoaded("admiral") - - -# search vs attached? same? -attached_pkgs <- sub(pattern="package:", replacement="", x=search()) -attached_pkgs -search() - -setdiff(attached_pkgs, loadedNamespaces()) -``` - -## Attached, Loaded -sessionInfo() - -## Loaded and attached: - - - -### To load/unload namespace -* library("pkg") # loads and attaches -* loadNamespace(pkg) # does NOT attach -```{r load_namespace } - -# setdiff(x, y) # lists elements in x, but not in y - -x <- c(0,1) -y <- c(0,1,2) -setdiff(x, y) # no elements in x, but not in y -setdiff(y, x) - -old <- loadedNamespaces() -old - -# load, NOT attach (Usually not done this way, library() will load and attach) -loadNamespace("jimTools") -new <- loadedNamespaces() -new -base::setdiff(new, old) - -# unload (detach 1st) - -# longley - -library(jimTools) -search() -unloadNamespace("jimTools") -search() -tinytest::expect_false("jimTools" %in% search()) - -loadedNamespaces() - -setdiff(old, loadedNamespaces()) - - - - -``` - -### detach pkg -* default, leaves loaded -* use unload=TRUE to detach & unload -```{r detach} - -search() -library("fs") -old <- search() - -detach("package:fs", unload = FALSE ) -setdiff(old, search()) -``` - -NEXT: -```{r detach2} - -# ------- detach #2 ---------- -# if ( , TRUE, FALSE ) -check <- function(pkg) -ifelse((pkg %in% search()), paste0(pkg," is in search"), paste0(pkg, " is NOT in search")) - - -pkg = "package:fs" -check(pkg) -loadedNamespaces() - -library("fs") -check(pkg) -loadedNamespaces() - -if("package:fs" %in% search()) detach("package:fs", unload=FALSE) -check(pkg) - -check(pkg) -unloadNamespace(pkg) -check(pkg) -``` - -### HOOKS -.onLoad - .onLoad(libname, pkgname) - .onAttach(libname, pkgname) - .onUnload(libpath) - .onDetach(libpath) - .Last.lib(libpath) -```{r hooks, eval = FALSE } - -.onLoad <- function(libname, pkgname) message ("loading") - -.onLoad(.libPaths(), "ggplot2") - - -# Loads (returns t/f) does NOT attach -(requireNamespace("ggplot2")) -search() # no change - -``` +unloadNamespace("admiral") +data("admiral_adsl") # not found +data("ae") # not found +ls(getNamespace("pharmaversesdtm")) diff --git a/try_things_here.Rproj b/try_things_here.Rproj index e83436a..b1d7e63 100644 --- a/try_things_here.Rproj +++ b/try_things_here.Rproj @@ -1,8 +1,8 @@ Version: 1.0 -RestoreWorkspace: Default -SaveWorkspace: Default -AlwaysSaveHistory: Default +RestoreWorkspace: No +SaveWorkspace: No +AlwaysSaveHistory: Yes EnableCodeIndexing: Yes UseSpacesForTab: Yes