我試圖使用bnlearnpackage來計算條件概率,並且在循環中使用"cpquery"函數時遇到問題。我使用包中包含的數據創建了一個示例,如下所示。在循環中使用cpquery函數時,循環中創建的變量(示例中的「evi」)不被函數識別。我收到錯誤:在循環中使用bnlearn函數「cpquery」
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)
在此先感謝!
我一直在和bnlearn軟件包的作者聯繫,看來我收到的錯誤是由於cpquery函數的範圍問題。這是顯而易見的,當我能夠讓cpquery函數在用戶定義函數的_outside_構造的for循環中正常工作,但在使用相同的for循環時出現錯誤_inside_用戶定義功能。 –