I would like to have a set of colors become defined when a package loads and cleared when package detaches.
What I've come up with that seems to work is shown in the following toy example which relies on deep assignment (which I know to be evil)
.onLoad <- function(libname, pkgname) {
}
.registerColors <- function(){
C.1 <<- c("#FF0000FF", "#80FF00FF", "#00FFFFFF", "#8000FFFF")
C.2 <<- c("#00AAFFFF", "#0000FFFF", "#AA00FFFF", "#FF00AAFF")
}
.onUnload <- function(libpath){
}
.onAttach <- function(libname, pkgname) {
.registerColors()
packageStartupMessage("Welcome to XYZ")
}
.onDetach <- function(libname, pkgname) {
rm(C.1, C.2, pos = 1)
packageStartupMessage("Buh-bye")
}
In this case, plot(seq(1:4, col = C.1) works. Is there a better or more elegant or less potentially destructive way to implement this?
You don't really need to go to all that trouble. Just define a function that checks if the package is loaded, and returns the appropriate colours.
chooseCols <- function()
{
if("this_package" %in% search())
C.1
else # use default colours
}
plot(1:4, col=chooseCols())
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With