Ich versuche, die bnlearnpackage zu verwenden, bedingte Wahrscheinlichkeiten zu berechnen, und ich bin in ein Problem, wenn die "cpquery" Funktion innerhalb einer Schleife verwendet wird. Ich habe ein Beispiel erstellt, das unten gezeigt wird, das Daten verwendet, die mit dem Paket enthalten werden. Bei Verwendung der Funktion cpquery in einer Schleife wird eine in der Schleife erstellte Variable (im Beispiel "evi") von der Funktion nicht erkannt. Ich erhalte den Fehler:Verwendung von bnlearn Funktion "cpquery" innerhalb einer Schleife
Error in parse(text = evi) : object 'evi' not found
Die Erstellungsschritte von "evi" basieren auf Beispielen, die vom Autor zur Verfügung gestellt werden.
Jede Hilfe, die Sie zur Verfügung stellen könnten, wäre großartig. Ich bin verzweifelt, einen Weg zu finden, dass ich die cpquery-Funktion für eine große Anzahl von Beobachtungen anwenden kann.
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)
Vielen Dank im Voraus!
Ich hatte Kontakt mit dem Autor des Pakets bnlearn, und es scheint, dass der Fehler, den ich erhalte, auf ein Problem mit der Funktion cpquery zurückzuführen ist. Dies ist offensichtlich, wenn ich in der Lage bin, die Funktion cpquery ordnungsgemäß in einer For-Schleife zu verarbeiten, die außerhalb einer benutzerdefinierten Funktion erstellt wird, aber den Fehler aufweist, wenn dieselbe For-Schleife _inside_ eines benutzerdefinierten verwendet wird Funktion. –