swh:1:snp:a4c99a50dc49f82b591f268001b320f8c3ca0041
Tip revision: dc000f2a5f006d137f66716b086025d618bf8306 authored by John M Chambers on 14 July 2008, 00:00:00 UTC
version 1.0-5
version 1.0-5
Tip revision: dc000f2
simulationResult.R
setClassUnion("randomGeneratorState", "integer")
setClass("simulationResult",
representation( firstState = "randomGeneratorState",
expr = "language",
result = "ANY",
lastState = "randomGeneratorState"))
simulationResult <- function(value, seed) {
x <- new("simulationResult")
if(!missing(seed))
set.seed(seed)
else if(!exists(".Random.seed", envir = .GlobalEnv, inherits = FALSE))
stop("No initialized state for the random generator and no seed supplied")
x@firstState <- .Random.seed
x@expr <- substitute(value)
x@result <- value
x@lastState <- .Random.seed
x
}
resetSeed <- function(object, last = FALSE) {
if(!is(object, "simulationResult"))
stop(
gettextf("Supplied object must be a simulationResult, got class \"%s\"",
class(object)), domain = NA)
assign(".Random.seed", (if(last) object@lastState else object@firstState),
envir = .GlobalEnv
)
}
setMethod("show", "randomGeneratorState",
function(object) {
if(is.numeric(object) && length(object) > 10) {
x <- format(object[-(1:2)])
cat("Uniform generator: ", object[[1]], "; Normal: ", object[[2]],
"\nSeeds: \n", sep = "")
cat(c(x[1:2], " ... ", x[length(x)]), sep = ", ")
cat("\n (length =", length(x), ")\n")
}
else
callNextMethod()
})
setMethod("show", "simulationResult",
function(object) {
cat("Initial state: "); show(object@firstState)
cat("\nFinal state: "); show(object@lastState)
cat("\nExpression: "); dput(object@expr)
cat("\nSummary of result:\n"); print(summary(object@result))
})