Adds variables to the Knowledge object. If the object is
frozen, an error is thrown if any of the variables are not present in the
data frame provided to the object.
See also
Other knowledge functions:
+.Knowledge(),
add_exogenous(),
add_tier(),
add_to_tier(),
as_bnlearn_knowledge(),
as_pcalg_constraints(),
as_tetrad_knowledge(),
convert_tiers_to_forbidden(),
deparse_knowledge(),
forbid_edge(),
get_tiers(),
knowledge(),
knowledge_to_caugi(),
remove_edge(),
remove_tiers(),
remove_vars(),
reorder_tiers(),
reposition_tier(),
require_edge(),
seq_tiers(),
unfreeze()
Examples
data(tpc_example)
# create Knowledge object using verbs
kn1 <- knowledge() |>
add_vars(names(tpc_example)) |>
add_tier(child) |>
add_tier(old, after = child) |>
add_tier(youth, before = old) |>
add_to_tier(child ~ starts_with("child")) |>
add_to_tier(youth ~ starts_with("youth")) |>
add_to_tier(old ~ starts_with("oldage")) |>
require_edge(child_x1 ~ youth_x3) |>
forbid_edge(child_x2 ~ youth_x4) |>
add_exogenous(child_x1) # synonym: add_exo()
# set kn1 to frozen
# (meaning you cannot add variables to the Knowledge object anymore)
# this is to get a true on the identical check
kn1$frozen <- TRUE
# create identical Knowledge object using DSL
kn2 <- knowledge(
tpc_example,
tier(
child ~ starts_with("child"),
youth ~ starts_with("youth"),
old ~ starts_with("oldage")
),
child_x1 %-->% youth_x3,
child_x2 %!-->% youth_x4,
exo(child_x1) # synonym: exogenous()
)
print(identical(kn1, kn2))
#> [1] TRUE
# cannot require an edge against tier direction
try(
kn1 |> require_edge(oldage_x6 ~ child_x1)
)
#> Error : Edge(s) violate tier ordering: oldage_x6 --> child_x1
# cannot forbid and require same edge
try(
kn1 |> forbid_edge(child_x1 ~ youth_x3)
)
#> Error : Edge(s) appear as both forbidden and required: child_x1 --> youth_x3
