Learn R Programming

DEXiR (version 1.0.2)

DexiAttribute-class: DexiAttribute

Description

DexiAttribute is a RC class representing a DEXi attribute in R.

Arguments

Fields

name

character. Name of the attribute as defined in the original DEXi model. Notice that such names may not be unique and may contain characters that cannot be used for variable names in R.

id

character. A unique identification of the attribute in the model. Derived from name so that it can be used as a variable name in R.

description

character. An optional textual description of the attribute.

inputs

list of DexiAttributes. A list of immediate descendants of this attribute in the tree/hierarchy. NULL for basic attributes.

link

DexiAttribute. NULL or a link to another DexiAttribute

scale

DexiScale. Value scale associated with this attribute, or NULL.

funct

DexiFunction. Aggregation function associated with this attribute, or NULL.

parent

DexiAttribute or DexiModel (only for DexiModel$root). Parent attribute of this attribute in the tree/hierarchy. The DexiModel$root's parent is the DexiModel, which contains all those attributes.

.alternatives

list. An internal field providing temporary storage for names or values of alternatives while reading them from a .dxi file.

Methods

affects(ant)

ant (as "antecedent") is some DexiAttribute. The function returns TRUE if ant lies on the path leading from this attribute towards the root, and is therefore affected by this attribute.

count()

Return the number of inputs of this attribute.

dim()

Dimensions of the value space determined by this attribute's inputs. Result: a numeric vector of length equal to ninp(), containing DexiScale$count() of all descendant attributes, or NA for attributes without associated scales. For basic attributes, dim() returns NULL.

initialize( name = "", description = "", inputs = list(), id = "", link = NULL, scale = NULL, funct = NULL, parent = NULL, ... )

Initialize a DexiAttribute object.

inp_index(inp)

Return the index of attribute inp in inputs of this attribute.

is_aggregate()

Logical: TRUE for aggregate attributes (attributes whose ninp() > 0).

is_basic(include_linked = TRUE)

Logical: TRUE for basic attributes (attributes whose ninp() == 0. include_linked determines whether linked attributes are counted as basic (TRUE) or not (FALSE).

is_continuous()

Logical: Indicates whether or not this is a continuous attribute.

is_discrete()

Logical: Indicates whether or not this is a discrete attribute.

is_link()

Logical: Indicates whether or not this is a linked attribute.

level()

Return the level of this attribute in the hierarchy. The level of DexiModel$root is 0.

model()

Return the DexiModel that contains this attribute.

ninp()

Return the number of inputs of this attribute.

structure()

Make an indentation string for this attribute, used for printing it in show().

tree_indent(none = " ", thru = "|", link = "*", last = "+", line = "-")

Construct a string for representing the indentation of this attribute in the model structure. The arguments none, thru, link, last and line are character strings to be used in the construction.

verify()

Check the correctnes of a DexiAttribute object and its fields. Result: error() or TRUE.

Details

In a DEXi model, attributes are variables that represent observed properties of decision alternatives. Attributes are structured in a tree, so each attribute may, but need not, have one or more direct descendants (lower-level attributes) in the tree. Attributes without descendants are called basic and serve as model inputs. Attributes with one or more descendants are called aggregate and represent model outputs. In order to represent attribute hierarchies rather than plain trees, some attributes may be linked: two attributes of which one links to another one collectively represent, in a conceptual sense, a single attribute in the hierarchy.

When completely defined, each attribute is associated with a value scale represented by a DexiScale object. An object DexiFunction is also defined for each aggregate attribute, aimed at defining the aggregation of the attribute's inputs to values of that attribute.

Examples

Run this code
# Load "Car.dxi"
CarDxi <- system.file("extdata", "Car.dxi", package = "DEXiR")
Car <- read_dexi(CarDxi)

# For example, consider attribute PRICE
att <- Car$attrib("PRICE")

# Print fields and basic properties of att
att$verify()
att$name
att$id
att$description
att_names(att$inputs)
att$link
att$scale
att$funct
att_names(att$parent)
att$is_aggregate()
att$is_basic()
att$is_link()
att$level()
att$count()
att$ninp()
att$dim()
att$model()
att$structure()

# Check if att affects attribute CAR
att$affects(Car$attrib("CAR"))

# Find the index of other attributes in att's inputs
att$inp_index(Car$attrib("MAINT.PRICE"))
att$inp_index(Car$attrib("CAR"))

Run the code above in your browser using DataLab