Open yonicd opened 6 years ago
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"
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: