我正在使用RCaller
对Java application
中的数据框执行一些分析。更具体地说,我想使用 CEM
库运行Coarsened Exact Matching
R
.
就CEM
而言,如果找到任何匹配项,它会返回有关数学运算的一些数据。否则(未找到匹配项)它将失败。
当我从Java application
调用runAndReturnResult
方法时,如果CEM
在R
内部失败,RCaller
会自动在我的Java application's console
上打印我添加到RCode
实例中的所有代码。
有没有办法防止这种打印?我的意思是,我想忽略找不到匹配项的情况并继续前进,而无需在我的控制台上打印消息。
提前感谢任何可以提供帮助的人。
有两种方法可以解决这个问题:
-
RCaller
使用的是java.util.logging.Logger
,所以你需要添加一个logback.xml - file
来禁用logger
的输出。 - 在
R
中使用tryCatch({})
,这样您的R code
就不会中断 ->也不会触发Java
中的任何错误。
我会推荐第二种解决方案。
更新:
您必须添加一个error - block
mat <- tryCatch({
cem(treatment = "c_CLUSTER", data = df, drop = dp))
}, error = function(e) {
NULL # or do something else
}, finally = {
})
如果你想忽略所有的warnings
,把你的method call
包裹在suppressWarnings(<method-call>)
或者,您也可以向tryCatch - block
添加warning - block