【发布时间】:2017-11-24 09:09:23
【问题描述】:
我正在使用 R 中的 bnlearn 包来训练贝叶斯网络。我对以下代码有问题(稍微修改了 bnlearn 示例代码):
library(bnlearn)
data(learning.test)
fitted = bn.fit(hc(learning.test), learning.test)
myfuncBN=function(){
var = names(learning.test)
obs = 2
str = paste("(", names(learning.test)[-3], "=='",
sapply(learning.test[obs,-3], as.character), "')",
sep = "", collapse = " & ")
str2 = paste("(", names(learning.test)[3], "=='",
as.character(learning.test[obs, 3]), "')", sep = "")
cpquery(fitted, eval(parse(text = str2)), eval(parse(text = str)))
}
myfuncBN()
此代码抛出错误:
包装期间出错:无法将“闭包”类型强制转换为“字符”类型的向量
但是,如果 str 和 str2 在函数 myfuncBN() 之外定义,它会起作用。 有人知道这是什么原因吗?
【问题讨论】: