arcops: Drop, add or set the direction of an arc or an edge

arc operationsR Documentation

Drop, add or set the direction of an arc or an edge

Description

Drop, add or set the direction of a directed or undirected arc (also known as edge).

Usage

# arc operations.
set.arc(x, from, to, check.cycles = TRUE, check.illegal = TRUE, debug = FALSE)
drop.arc(x, from, to, debug = FALSE)
reverse.arc(x, from, to, check.cycles = TRUE, check.illegal = TRUE, debug = FALSE)

# edge (i.e. undirected arc) operations
set.edge(x, from, to, check.cycles = TRUE, check.illegal = TRUE, debug = FALSE)
drop.edge(x, from, to, debug = FALSE)

Arguments

x

an object of class bn.

from

a character string, the label of a node.

to

a character string, the label of another node.

check.cycles

a boolean value. If TRUE the graph is tested for acyclicity; otherwise the graph is returned anyway.

check.illegal

a boolean value. If TRUE arcs that break the parametric assumptions of x, such as those from continuous to discrete nodes in conditional Gaussian networks, cause an error.

debug

a boolean value. If TRUE a lot of debugging output is printed; otherwise the function is completely silent.

Details

The set.arc() function operates in the following way:

  • if there is no arc between from and to, the arc from \rightarrow to is added.

  • if there is an undirected arc between from and to, its direction is set to from \rightarrow to.

  • if the arc to \rightarrow from is present, it is reversed.

  • if the arc from \rightarrow to is present, no action is taken.

The drop.arc() function operates in the following way:

  • if there is no arc between from and to, no action is taken.

  • if there is a directed or an undirected arc between from and to, it is dropped regardless of its direction.

The reverse.arc() function operates in the following way:

  • if there is no arc between from and to, it returns an error.

  • if there is an undirected arc between from and to, it returns an error.

  • if the arc to \rightarrow from is present, it is reversed.

  • if the arc from \rightarrow to is present, it is reversed.

The set.edge() function operates in the following way:

  • if there is no arc between from and to, the undirected arc from - to is added.

  • if there is an undirected arc between from and to, no action is taken.

  • if either the arc from \rightarrow to or the arc to \rightarrow from are present, they are replaced with the undirected arc from - to.

The drop.edge() function operates in the following way:

  • if there is no undirected arc between from and to, no action is taken.

  • if there is an undirected arc between from and to, it is removed.

  • if there is a directed arc between from and to, no action is taken.

Value

All functions return invisibly an updated copy of x.

Author(s)

Marco Scutari

Examples

dag = cpdag(model2network("[A][C][F][B|A][D|A:C][E|B:F]"))
dag

## use debug = TRUE to get more information.
updated = set.arc(dag, "A", "B")
updated
updated = drop.arc(dag, "A", "B")
updated
updated = drop.edge(dag, "A", "B")
updated
updated = reverse.arc(dag, "A", "D")
updated

bnlearn documentation built on Sept. 11, 2024, 8:27 p.m.