preamble <- function(l) {
titulo <- l[1]
if(titulo != 'MARKOV') stop('não é markov.')
n_var <- as.numeric(l[2])
card <- as.numeric(unlist(strsplit(l[3], ' ')))
names(card) <- sprintf('X%d', seq_along(card))
n_cliques <- as.numeric(l[4])
cliques <- lapply(seq_len(n_cliques), function(i) {
ind <- as.numeric(unlist(strsplit(l[4 + i], ' |\t')))[-1]
list(var = names(card)[ind + 1])
})
return(list(n_var = n_var, cardinalities = card, cliques = cliques))
}
fct_tables <- function(l, pr) {
n_cliques <- length(pr$cliques)
cliques <- lapply(seq_len(n_cliques), function(i) {
ids <- pr$cliques[[i]]
ns <- lapply(pr$cardinalities[ids$var], function(n) 0:(n-1))
d <- dplyr::arrange_(expand.grid(ns), .dots = ids$var)
fac_id <- 4 + n_cliques + i * 3
# fac_id <- 4 + n_cliques + i * 2 + 1
d$factor <- as.numeric(unlist(strsplit(l[fac_id], ' ')))
ids$cpt <- d
ids
})
names(cliques) <- sprintf('clique%d', seq_along(cliques))
cliques
}
read_uai <- function(arq) {
lines <- readLines(arq)
net <- preamble(lines)
net$cliques <- fct_tables(lines, net)
net
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.