NodeUserField {RNetica} | R Documentation |
Netica provides a mechanism for associating user defined values with a
node as a series of key/value pairs. The key must be a
IDname
and the value can be an arbitrary string. The
function NodeUserField
accesses the string value associated
with the key, and the function NodeUserObj
accesses an R object
associated with the key.
NodeUserField(node, fieldname) NodeUserField(node, fieldname) <- value NodeUserObj(node, fieldname) NodeUserObj(node, fieldname) <- value NodeAllUserFields(node)
node |
A |
fieldname |
A character scalar conforming to the |
value |
For |
Netica contains a mechanism for associating user data with nodes.
In the Netica documentation, they note that only strings are really
supported as only strings are portable across implementations.The
function NodeUserField
provides direct access for storing
strings.
The function NodeUserObj
wraps the call to
NodeUserField
with a call to dputToString
or
dgetFromString
to allow the serialization of arbitrary
objects.
The function NodeUserField
returns a character scalar with
the value stored in the field fieldname, or NA
if no
such field exists.
The function NodeUserObj
returns an arbitrary object created
by calling dgetFromString
on the value stored in the
field fieldname, or NULL
if no such field exists. If
the string cannot be interpreted as an R object, it generates an
error.
The function NodeAllUserFields
returns a character vector
containing all user data stored with the node (this will be the
serialized versions of the objects, not the objects themselves). The
names of the result are the names of the fields.
In his book Extending R John Chambers suggest serializing R objects through XML or JSON mechanisms rather than the older dump protocol. I may move to that later, although it will likely cause backwards compatability issues.
Russell Almond
http://norsys.com/onLineAPIManual/index.html GetNodeUserField_bn(), SetNodeUserField_bn(), GetNodeNthUserField_bn()
NeticaNode
, NodeDescription()
NetworkUserField
, dputToString()
sess <- NeticaSession() startSession(sess) usedNet <- CreateNetwork("UsedNet", session=sess) userNode <- NewContinuousNode(usedNet, "UserNode") NodeUserField(userNode,"Author") <- "Russell Almond" NodeUserField(userNode,"Status") <- "In Progress" stopifnot(NodeUserField(userNode,"Author")=="Russell Almond") stopifnot(NodeUserField(userNode,"Status")=="In Progress") fields <- NodeAllUserFields(userNode) stopifnot(length(fields)==2) stopifnot(all(!is.na(match(c("Russell Almond","In Progress"),fields)))) stopifnot(all(!is.na(match(c("Author","Status"),names(fields))))) stopifnot(is.na(NodeUserField(userNode,"gender"))) stopifnot(is.null(NodeUserObj(userNode,"gender"))) x <- sample(1L:10L) NodeUserObj(userNode,"x") <- x x1 <- NodeUserObj(userNode,"x") stopifnot(all(x==x1)) DeleteNetwork(usedNet) stopSession(sess)