我正在寻找一种解决方法,用于处理
能否有任何方式让我知道何时会出现此错误消息,并处理此问题?例如:运行算法直到返回值没有空簇。
对我来说,创建一个漂亮的可重现示例相当困难。但是,我提供了这个丑陋但功能性的示例:
amap
包中的Kmeans
函数产生的警告信息。该警告信息如下:empty cluster: try a better set of initial centers
。能否有任何方式让我知道何时会出现此错误消息,并处理此问题?例如:运行算法直到返回值没有空簇。
对我来说,创建一个漂亮的可重现示例相当困难。但是,我提供了这个丑陋但功能性的示例:
library(amap)
numberK = 20
ts.len = 7
time.series <- rep(sample(1:8000, numberK, replace = TRUE),ts.len)
time.series <- rep(rbind(time.series, time.series), 30)
time.series <- matrix(time.series, ncol = ts.len)
centers <- matrix( sample(1:3000, numberK*ts.len), ncol = ts.len)
Kmeans((time.series), centers = centers, iter.max = 99)
如果您在终端上运行此命令,可能会收到我所说的警告消息。
注意:我解决这个问题的想法是捕获警告信号,然后执行解决方案。但是,我不知道如何做到这一点。
options(warn = 2); tryCatch(expr = {Kmeans((time.series), centers = centers, iter.max = 99)},error = function(e) "Caught error")
。 - jorantryCatch(expr = {Kmeans((time.series), centers = centers, iter.max = 99)},warning = function(e) "捕获到警告")
- joranattempt <- try(expr = {Kmeans((time.series), centers = centers, iter.max = 99)},silent = TRUE)
,然后检查attempt
的类别,并根据情况进行分支。 - joran