p_unload for namespaces not in searchpath
is there a good way to unload namespaces in the correct order for a namespace that i attached using asNamespace?
using p_unload i get this:
Restarting R session...
loadedNamespaces()
# [1] "graphics" "tools" "utils" "yaml" "grDevices" "stats" "datasets" "methods" "base"
asNamespace('ggplot2')
# <environment: namespace:ggplot2>
loadedNamespaces()
# [1] "colorspace" "scales" "lazyeval" "plyr" "graphics" "tools" "pillar" "gtable" "utils" "tibble" "yaml" "grDevices" "Rcpp" "stats"
# [15] "ggplot2" "datasets" "grid" "methods" "rlang" "munsell" "base"
pacman::p_unload('ggplot2')
# The following packages were not previously loaded:ggplot2
loadedNamespaces()
# [1] "colorspace" "scales" "lazyeval" "plyr" "graphics" "tools" "pillar" "gtable" "utils" "tibble" "yaml" "grDevices" "Rcpp" "stats"
# [15] "ggplot2" "datasets" "grid" "methods" "pacman" "rlang" "munsell" "base"
this came up when i want to list exported functions in all installed packages, but I end up chocking the loadedNamespace if .libPaths() have too many packages in them
Interesting. p_unload is/was mainly for unloading and removing from the search path. As far as I can tell we never thought or cared about namespaces that were loaded but not attached since they don't actually mess up anything to do with the search path.
We could look into adding a parameter to p_unload to unload packages that are loaded but not attached.
btw this is my motivation use case: https://github.com/metrumresearchgroup/sinew/blob/master/R/pretty_namespace.R
txt <- '#some comment
yy <- function(a=4){
head(runif(10),a)
# a comment
}
zz <- function(v=10,a=8){
head(runif(v),a)
}'
pretty_namespace(text=txt)
#some comment
yy <- function(a=4){
utils::head(stats::runif(10),a)
# a comment
}
zz <- function(v=10,a=8){
utils::head(stats::runif(v),a)
}
if you want you can use the fn i wrote in the end (fork of the nothing pkg), which is brute force.
https://github.com/metrumresearchgroup/sinew/blob/master/R/something.R
this is also an issue that pops up in the clean up (the dll's dont unload,this is a pacman issue too)
https://github.com/romainfrancois/nothing/issues/9
library(ggplot2)
basename(unlist(sapply(library.dynam(),'[',2)))
# [1] "methods.so" "utils.so" "grDevices.so" "graphics.so" "stats.so" "tools.so"
# [7] "yaml.so" "digest.so" "grid.so" "Rcpp.so" "colorspace.so" "plyr.so"
# [13] "scales.so" "lazyeval.so" "rlang.so" "tibble.so"
pacman::p_unload('ggplot2')
# The following packages have been unloaded:ggplot2
basename(unlist(sapply(library.dynam(),'[',2)))
# [1] "methods.so" "utils.so" "grDevices.so" "graphics.so" "stats.so" "tools.so"
# [7] "yaml.so" "digest.so" "grid.so" "Rcpp.so" "colorspace.so" "plyr.so"
# [13] "scales.so" "lazyeval.so" "rlang.so" "tibble.so"
solved my problem:
txt <- "#some comment
#' @import utils
yy <- function(a=4){
utils::head(runif(10),a)
aes()
# a comment
}"
> library(sinew)
Setting sinew_opts to _sinewconfig.yml specs
Current add_fields: details,examples,seealso,rdname,export,author
> library.dynam()
Filename Dynamic.Lookup
1 /Library/Frameworks/R.framework/Versions/3.3/Resources/library/methods/libs/methods.so FALSE
2 /Library/Frameworks/R.framework/Versions/3.3/Resources/library/utils/libs/utils.so FALSE
3 /Library/Frameworks/R.framework/Versions/3.3/Resources/library/grDevices/libs/grDevices.so FALSE
4 /Library/Frameworks/R.framework/Versions/3.3/Resources/library/graphics/libs/graphics.so FALSE
5 /Library/Frameworks/R.framework/Versions/3.3/Resources/library/stats/libs/stats.so FALSE
6 /Library/Frameworks/R.framework/Versions/3.3/Resources/library/tools/libs/tools.so FALSE
7 /Library/Frameworks/R.framework/Versions/3.3/Resources/library/yaml/libs/yaml.so TRUE
8 /Library/Frameworks/R.framework/Versions/3.3/Resources/library/digest/libs/digest.so TRUE
9 /Library/Frameworks/R.framework/Versions/3.3/Resources/library/Rcpp/libs/Rcpp.so TRUE
10 /Library/Frameworks/R.framework/Versions/3.3/Resources/library/htmltools/libs/htmltools.so FALSE
11 /Library/Frameworks/R.framework/Versions/3.3/Resources/library/httpuv/libs/httpuv.so TRUE
12 /Library/Frameworks/R.framework/Versions/3.3/Resources/library/mime/libs/mime.so TRUE
13 /Library/Frameworks/R.framework/Versions/3.3/Resources/library/stringi/libs/stringi.so FALSE
> loadedNamespaces()
[1] "shiny" "R6" "graphics" "htmltools" "tools" "rstudioapi" "utils" "sinew"
[9] "yaml" "grDevices" "memoise" "Rcpp" "stats" "datasets" "stringi" "methods"
[17] "digest" "xtable" "httpuv" "mime" "miniUI" "base"
> pretty_namespace(text=txt,check.installed = TRUE)
still missing functions: aes, updating memoised index of other installed libraries (421)... the initial index may be a while
found all!
#some comment
#' @import utils
yy <- function(a=4){
utils::head(stats::runif(10),a)
ggplot2::aes()
# a comment
}
> library.dynam()
Filename Dynamic.Lookup
1 /Library/Frameworks/R.framework/Versions/3.3/Resources/library/methods/libs/methods.so FALSE
2 /Library/Frameworks/R.framework/Versions/3.3/Resources/library/utils/libs/utils.so FALSE
3 /Library/Frameworks/R.framework/Versions/3.3/Resources/library/grDevices/libs/grDevices.so FALSE
4 /Library/Frameworks/R.framework/Versions/3.3/Resources/library/graphics/libs/graphics.so FALSE
5 /Library/Frameworks/R.framework/Versions/3.3/Resources/library/stats/libs/stats.so FALSE
6 /Library/Frameworks/R.framework/Versions/3.3/Resources/library/tools/libs/tools.so FALSE
7 /Library/Frameworks/R.framework/Versions/3.3/Resources/library/yaml/libs/yaml.so TRUE
8 /Library/Frameworks/R.framework/Versions/3.3/Resources/library/digest/libs/digest.so TRUE
9 /Library/Frameworks/R.framework/Versions/3.3/Resources/library/Rcpp/libs/Rcpp.so TRUE
10 /Library/Frameworks/R.framework/Versions/3.3/Resources/library/htmltools/libs/htmltools.so FALSE
11 /Library/Frameworks/R.framework/Versions/3.3/Resources/library/httpuv/libs/httpuv.so TRUE
12 /Library/Frameworks/R.framework/Versions/3.3/Resources/library/mime/libs/mime.so TRUE
13 /Library/Frameworks/R.framework/Versions/3.3/Resources/library/stringi/libs/stringi.so FALSE
> loadedNamespaces()
[1] "Rcpp" "methods" "utils" "tools" "grDevices" "digest" "memoise" "sinew"
[9] "shiny" "rstudioapi" "yaml" "graphics" "datasets" "stats" "base" "R6"
[17] "htmltools" "mime" "xtable" "httpuv" "stringi" "miniUI" "lazyeval"