在做贝叶斯近似推理时,想把如下代码封装到一个函数中去,可是怎么都调不通,请问各位大神该如何解决呢?
R是一个数据框,前两列是数据集中数据,后两列是存储推理结果和计算时间
函数要求输入参数是1、数据集dataset1;2、bn对象 fitted.rnd; 3、method调用的方法“ls”或“lw”
函数返回值R
代码如下:
R <- data.frame(dataset1[ ,c(5,10)], NA, NA)
names(R) <- c("WEATHERCONDICTIONS", "TRUES", "PREDS", "TIME")
n <- nrow(dataset1)
Sxt.ls1 <- c()
for(i in 1:n){
t <- as.vector(proc.time())[1] #取第一个运行时间,计算时间
Sxt.ls1[i] <- cpdist(fitted.rnd, nodes="Status",
evidence=((WeatherConditions==as.character(dataset1[i,5]))
&(Visibility==as.character(dataset1[i,6])))
,method="ls")
if(!is.null(names(which.max(prop.table(table(Sxt.ls1[i]))))))
R[i,"PREDS"] <- names(which.max(prop.table(table(Sxt.ls1[i]))))
else R[i,"PREDS"] <- R[i,"PREDS"]
R[i,"TIME"] <- as.vector(proc.time()-t)[1]
}
R