0
query_averager <- function(arg1,
                           arg2) {
n = tibble()
   i = 1
   while (i <= 100) {
   n[i] <- cpquery(fitted = fitted_bn_01,
        event = (ret == "Acima da Selic") ,
        evidence = (solidez == arg1) & (resultado == arg2))
   i = i+1

   }
return (mean(n))
}

Query_result <- query_averager(arg1 = "1", arg2 = "Lucro acima da mediana")

这给了我“找不到对象 arg1”,但是当我在cpquery()外面使用该函数时,它工作得很好。

没有 query_averager 函数的工作代码:

cpquery(fitted = fitted_bn_01,
    event = (ret == "Acima da Selic") ,
    evidence = (solidez == "1") & (resultado == "Lucro acima da median"))

我相信其他变量是什么并不重要,主要问题是为什么:

 solidez == "1"

有效,下面的代码段无效:

solidez == arg1
4

1 回答 1

1

证据表达式中似乎没有任何变量,因为它们不会在函数体中进行评估。因此,您似乎必须在评估之前操作函数调用。我没有安装和工作这个包,但它似乎可以工作:

query_averager <- function(arg1, arg2) {
   n = tibble()
   i = 1
   while (i <= 100) {
   n[i] <- eval(substitute(cpquery(fitted = fitted_bn_01,
        event = (ret == "Acima da Selic") ,
        evidence = (solidez == arg1) & (resultado == arg2))))
   i = i+1

   }
  mean(n)
}

substitute()部分将 和 的值注入arg1arg2表达式中。然后我们用 评估那个表达式eval()

于 2020-07-29T23:42:08.380 回答