Я пытаюсь использовать bnlearn пакет для расчета условных вероятностей, и я столкнулся с проблемой, когда Функция "cpquery" используется внутри цикла. Я создал пример, показанный ниже, используя данные, включенные в пакет. При использовании функции cpquery в цикле переменная, созданная в цикле ("evi" в примере), не распознается функцией. Я получаю сообщение об ошибке:
Error in parse(text = evi) : object 'evi' not found
Этапы создания "evi" основаны на примерах, предоставленных автором.
Любая помощь, которую вы могли бы оказать, была бы здоровой. Я отчаянно пытаюсь найти способ применить функцию cpquery для большого количества наблюдений.
library(bnlearn)
data(learning.test)
fitted = bn.fit(hc(learning.test), learning.test)
bn.function <- function(network, evidence_data) {
a <- NULL
b <- nrow(evidence_data)
for (i in 1:b) {
evi <- paste("(", names(evidence_data), "=='",
sapply(evidence_data[i,], as.character), "')",
sep = "", collapse = " & ")
a[i] <- cpquery(network, (C=='c'), eval(parse(text=evi)))
}
return(a)
}
test <- bn.function(fitted, learning.test)
Заранее спасибо!
evi <<- evi
перед вызовом cpquery. Это определяет переменную в глобальной среде. - person Austin   schedule 31.05.2018