2

如果我在 R studio 中调用我的 R 脚本的 compute_score 函数,返回的地理分数是 68.18,这是我所期望的。但是,当我在 Renjin 中调用相同的函数时,它返回 60.0,这是不正确的。在这两种情况下,我都为函数参数使用了完全相同的值。知道是什么原因造成的吗?有没有可能这可能是 Renjin 错误?

我的 compute_score 函数的结尾看起来像这样......

compute_score <- function(CIF)
{
   ...

    response = list(
        geographyScore = as.numeric(geographyScore),
        industryScore = as.numeric(industryScore),
        productScore = as.numeric(productScore),
        channelScore = as.numeric(channelScore),
        clientTypeScore = as.numeric(clientTypeScore),
        transactionScore = as.numeric(transactionScore),
        tags = tags
     )

   return(response)
}

我使用以下代码行在我的 Java 类中调用它...

ScriptEngine engine = new RenjinScriptEngineFactory().getScriptEngine();
File file = new File(getClassLoader().getResource("sample_interface.R").getFile());
engine.eval(new java.io.FileReader(file));
ListVector resList = (ListVector) engine.eval("compute_score(" + buildRRequest(buildRequest(ACCOUNT_HOLDER, NP_RETAIL, ISO_SWISS, ISO_WESTERN_SAHARA, false)) + ")");

当我签入 Intellij 调试器时,这就是 resList 的评估结果:

list(geographyScore = 60.0, industryScore = 75.0, productScore = 100.0, channelScore = 50.0, clientTypeScore = 25.0, transactionScore = 100.0, tags = list())

除地理以外的所有其他字段都正确返回,绝对应该是 68.18182,有人知道为什么不正确吗?

提醒一下,在 RStudio 中调用函数时传入完全相同的值给我 68.18182,使用 renjin 的 eval 操作调用具有相同参数值的相同函数给我 60.0 的分数,乍一看似乎是四舍五入但我不太确定,任何帮助将不胜感激。

4

0 回答 0