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)
前もって感謝します!