NodeUserField {RNetica}R Documentation

Gets user definable fields associated with a Netica node.

Description

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.

Usage

NodeUserField(node, fieldname)
NodeUserField(node, fieldname) <- value
NodeUserObj(node, fieldname)
NodeUserObj(node, fieldname) <- value
NodeAllUserFields(node)

Arguments

node

A NeticaNode object indicating the node.

fieldname

A character scalar conforming to the IDname rules.

value

For NodeUserField, an arbitrary character vector containing the new value. Only the first element is used. For NodeUserObj, an arbitrary object which is serialized with dputToString and then saved.

Details

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.

Value

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.

Note

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.

Author(s)

Russell Almond

References

http://norsys.com/onLineAPIManual/index.html GetNodeUserField_bn(), SetNodeUserField_bn(), GetNodeNthUserField_bn()

See Also

NeticaNode, NodeDescription() NetworkUserField, dputToString()

Examples

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)

[Package RNetica version 0.5-4 Index]