Settings | R Documentation |
Package: R.utils
Class Settings
Object
~~|
~~+--
Options
~~~~~~~|
~~~~~~~+--
Settings
Directly known subclasses:
public static class Settings
extends Options
Class for applicational settings.
Settings(basename=NULL, ...)
basename |
A |
... |
Arguments passed to constructor of superclass Options. |
Methods:
findSettings | - | |
getLoadedPathname | - | |
isModified | - | |
loadAnywhere | - | |
promptAndSave | - | |
saveAnywhere | - | |
Methods inherited from Options:
as.character, as.list, equals, getLeaves, getOption, hasOption, names, nbrOfOptions, setOption, str
Methods inherited from Object:
$, $<-, [[, [[<-, as.character, attach, attachLocally, clearCache, clearLookupCache, clone, detach, equals, extend, finalize, getEnvironment, getFieldModifier, getFieldModifiers, getFields, getInstantiationTime, getStaticInstance, hasField, hashCode, ll, load, names, objectSize, print, save
Here is a generic .First.lib()
function for loading settings
with package. It also (almost) assures that the package is detached
when R finishes. See onSessionExit
() why it is not guaranteed!
The almost generic .Last.lib()
function, which will prompt
user to save settings, is called when a package is detached.
It is custom to put these functions in a file named zzz.R
.
.First.lib():
.First.lib <- function(libname, pkgname) { # Write a welcome message when package is loaded pkg <- Package(pkgname) assign(pkgname, pkg, pos=getPosition(pkg)) # Read settings file ".<pkgname>Settings" and store it in package # variable '<pkgname>Settings'. varname <- paste(pkgname, "Settings") basename <- paste(".", varname, sep="") settings <- Settings$loadAnywhere(basename, verbose=TRUE) if (is.null(settings)) settings <- Settings(basename) assign(varname, settings, pos=getPosition(pkg)) # Detach package when R finishes, which will save package settings too. onSessionExit(function(...) detachPackage(pkgname)) packageStartupMessage(getName(pkg), " v", getVersion(pkg), " (", getDate(pkg), ") successfully loaded. See ?", pkgname, " for help.\n", sep="") } # .First.lib()
.Last.lib():
.Last.lib <- function(libpath) { pkgname <- "<package name>" # Prompt and save package settings when package is detached. varname <- paste(pkgname, "Settings", sep="") if (exists(varname)) { settings <- get(varname) if (inherits(settings, "Settings")) promptAndSave(settings) } } # .Last.lib()
Henrik Bengtsson
# Load settings from file, or create default settings
basename <- "some.settings"
settings <- Settings$loadAnywhere(basename)
if (is.null(settings))
settings <- Settings(basename)
# Set default options, if missing.
setOption(settings, "graphics/verbose", TRUE, overwrite=FALSE)
setOption(settings, "io/verbose", Verbose(threshold=-1), overwrite=FALSE)
# Save and reload settings
path <- tempdir()
saveAnywhere(settings, path=path)
settings2 <- Settings$loadAnywhere(basename, paths=path)
# Clean up
file.remove(getLoadedPathname(settings2))
# Assert correctness
stopifnot(equals(settings, settings2))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.