setPemaClass: PEMA classes
Applies to version 8.0.3 of package RevoPemaR.
Description
Returns a generator function for creating analysis reference class objects to use in pemaCompute.
Usage
setPemaClass(Class, fields = character(), contains = character(),
methods = list(), where = topenv(parent.frame()), includeMethods = TRUE, ...)
Arguments
Class
character string name for the class.
fields
either a character vector of field names or a named list of the fields.
contains
optional vector of super reference classes for this class. The fields and class-based methods will be inherited.
methods
a named list of function definitions that can be invoked on objects from this class.
where
the environment in which to store the class definition.
includeMethods
logical. If TRUE
, methods (including those of parent classes) will be included when serializing.
...
other arguments to be passed to setRefClass.
Details
See setRefClass for more information on arguments and using reference classes.
The setPemaCLass
generator provides a framework for writing parallel, external memory
algorithms (PEMAs) that can be run serially on a single computer, and will be automatically
parallelized when run on cluster supported by RevoScaleR.
Value
returns a generator function suitable for creating objects from the class, invisibly.
See Also
PemaBaseClass, setRefClass, PemaMean, pemaCompute
Examples
# A very simple example of computing a sum
PemaSum <- setPemaClass("PemaSum",
contains = "PemaBaseClass",
fields = list(
# list the fields (member variables)
sum = "numeric",
varName = "character"
),
methods = list(
# list the methods (member functions)
initialize = function(varName = "", ...)
{
'sum is initialized to 0'
# callSuper calls the method of the parent class
callSuper(...)
usingMethods(.pemaMethods) # Will include methods if includeMethods is TRUE
# Fields are modified in a method by using the non-local assignment operator
varName <<- varName
sum <<- 0
},
processData = function(dataList)
{
'Updates the sum from the current chunk of data.'
sum <<- sum + sum(as.numeric(dataList[[varName]]), na.rm = TRUE)
invisible(NULL)
},
updateResults = function(pemaSumObj)
{
'Updates the sum from another PemaSum object.'
sum <<- sum + pemaMeanObj$sum
invisible(NULL)
},
processResults = function()
{
'Returns the sum. No further computations required.'
sum
},
getVarsToUse = function()
{
'Returns the varName.'
varName
}
)
)
pemaSumObj <- PemaSum()
pemaCompute(pemaSumObj, data = iris, varName = "sepal.length")