我正在尝试使用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)
提前致谢!