【发布时间】:2020-11-18 09:44:17
【问题描述】:
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"
有效,下面的代码 sn-p 无效:
solidez == arg1
【问题讨论】:
-
函数
cpquery从何而来?它是否使用惰性评估?当您在函数外使用cpquery时,您是在使用变量还是在输入文字值? -
ret、solidez、resultado、fitted_bn_01定义在哪里?如果您使用functional-programming 标记此内容,是否具有讽刺意味的是,此处建议的范围违规违反了它的某些原则,还是这里发生了其他事情? -
cpquery 是来自 bnlearn 包的函数;我将使用我描述的工作代码编辑主要帖子。我不知道它是否使用惰性评估。 // 不知道函数式编程标签是否正确。可能只是新手的错误,如果是,请见谅xD
-
@YBS 同样的问题。我试过作为参数“1”和 1 传递,输出没有改变。
-
@MrFlick 现在我知道什么是惰性求值了,是的,它是惰性求值。
标签: r function parameter-passing bnlearn