Henrik Bengtsson
2008-Feb-21 22:57 UTC
[Rd] Suggestion: isLoaded() to test if a package is loaded (without loading it)
Hi, for 'affxparser' (Bioconductor), we needed a function to test if a certain package was loaded or not, but we did not want to load it if it wasn't, which is why we couldn't use require(). We came up with the following solution: isPackageLoaded <- function(package, version=NULL, ...) { s <- search(); if (is.null(version)) { s <- sub("_[0-9.-]*", "", s); } else { package <- manglePackageName(package, version); } pattern <- sprintf("package:%s", package); (pattern %in% s); } Example: isPackageLoaded("base") As I see that require() and library() is using similar code for testing if a package is loaded or not, feel free to have the above added to the 'base' package. /Henrik
Seth Falcon
2008-Feb-22 01:27 UTC
[Rd] Suggestion: isLoaded() to test if a package is loaded (without loading it)
"Henrik Bengtsson" <hb at stat.berkeley.edu> writes:> Hi, > > for 'affxparser' (Bioconductor), we needed a function to test if a > certain package was loaded or not, but we did not want to load it if > it wasn't, which is why we couldn't use require(). We came up with > the following solution: > > isPackageLoaded <- function(package, version=NULL, ...) { > s <- search(); > if (is.null(version)) { > s <- sub("_[0-9.-]*", "", s); > } else { > package <- manglePackageName(package, version); > } > pattern <- sprintf("package:%s", package); > (pattern %in% s); > }This only tests whether or not the given package is attached to the search path. You also (I think) want to search loaded namespaces. But I think such a helper would be useful in general. + seth -- Seth Falcon | seth at userprimary.net | blog: http://userprimary.net/user/