| arc operations {bnlearn} | R Documentation |
Drop, add or set the direction of an arc.
set.arc(x, from, to, check.cycles = TRUE, debug = FALSE) drop.arc(x, from, to, debug = FALSE) reverse.arc(x, from, to, check.cycles = TRUE, debug = FALSE)
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. |
debug |
a boolean value. If TRUE a lot of debugging output
is printed; otherwise the function is completely silent. |
The set.arc function operates in the following way:
from and to,
the arc (from, to) is added.
from and
to, its direction is set to (from, to).
to, from) is present, it's
reversed.
from, to) is present, no
action is taken.
The drop.arc function operates in the following way:
from and to,
no action is taken.
from and
to, it's dropped.
from and
to, it's dropped regardless of its direction.
The reverse.arc function operates in the following way:
from and to,
it returns an error.
from and
to, it returns an error.
to, from) is present, it's
reversed.
from, to) is present, it's
reversed.
set.arc and drop.arc return invisibly an updated
copy of x.
Marco Scutari
data(learning.test) res = gs(learning.test) res2 = set.arc(res, "A", "B") compare(res, res2, debug = TRUE) # * children of A in r1 not present in r2: # character(0) # * children of A in r2 not present in r1: # [1] "B" # * parents of B in r1 not present in r2: # character(0) # * parents of B in r2 not present in r1: # [1] "A" # * directed arcs in r1 not present in r2: # character(0) # * directed arcs in r2 not present in r1: # [1] "A -> B" # * undirected arcs in r1 not present in r2: # [1] "A - B" "B - A" # * undirected arcs in r2 not present in r1: # character(0) # [1] FALSE res2 = drop.arc(res, "A", "B") compare(res, res2, debug = TRUE) # * nodes in the markov blanket of A in r1 not present in r2: # [1] "B" # * nodes in the markov blanket of A in r2 not present in r1: # character(0) # * nodes in the neighbourhood of A in r1 not present in r2: # [1] "B" # * nodes in the neighbourhood of A in r2 not present in r1: # character(0) # * nodes in the markov blanket of B in r1 not present in r2: # [1] "A" # * nodes in the markov blanket of B in r2 not present in r1: # character(0) # * nodes in the neighbourhood of B in r1 not present in r2: # [1] "A" # * nodes in the neighbourhood of B in r2 not present in r1: # character(0) # * undirected arcs in r1 not present in r2: # [1] "A - B" "B - A" # * undirected arcs in r2 not present in r1: # character(0) # [1] FALSE res2 = reverse.arc(res, "A", "D") compare(res, res2, debug = TRUE) # * nodes in the markov blanket of A in r1 not present in r2: # [1] "C" # * nodes in the markov blanket of A in r2 not present in r1: # character(0) # * parents of A in r1 not present in r2: # character(0) # * parents of A in r2 not present in r1: # [1] "D" # * children of A in r1 not present in r2: # [1] "D" # * children of A in r2 not present in r1: # character(0) # * nodes in the markov blanket of C in r1 not present in r2: # [1] "A" # * nodes in the markov blanket of C in r2 not present in r1: # character(0) # * parents of D in r1 not present in r2: # [1] "A" # * parents of D in r2 not present in r1: # character(0) # * children of D in r1 not present in r2: # character(0) # * children of D in r2 not present in r1: # [1] "A" # * directed arcs in r1 not present in r2: # [1] "A -> D" # * directed arcs in r2 not present in r1: # [1] "D -> A" # [1] FALSE ## use debug = TRUE for more information ## Not run: set.arc(res, "A", "B", debug = TRUE) drop.arc(res, "A", "B", debug = TRUE) reverse.arc(res, "A", "D", debug = TRUE) ## End(Not run)