我对使用的了解不足,tryCatch()
但在正在进行的讨论中很难找到一个好的解决方案。
我有一个返回对象的自编程函数。它实际上是一个列表对象,但为简单起见,假设它是一个标量。我正在使用for()
循环来引导此功能。我的循环是以下形式:
boot<-1000
for(i in 1:boot){
bootstrap_data<-data[sample(nrow(data),nrow(data),replace=T),]
out[i]<-myfunction(bootstrap_data,X,...)
}
myfunction()
有时会返回错误消息,因为它用于lm()
在数据子集上拟合模型,然后从不同的子集中预测新数据。然后可能会发生某些因素,某些水平偶然不会出现在用于拟合的数据中,但它们确实出现在预测子集中。这确实很少发生(例如,大约每 15,000 次迭代),但它确实发生了(我需要引导myfunction()
很多次)。
我想使用tryCatch()
或类似的功能来捕获我的引导循环。此外,我想定义一个索引来计算循环tryCatch()
中必须捕获函数的频率。boot
最后,无论错误发生的次数如何,我都希望有一个常数。
R 返回以下消息:
Error in model.frame.default(Terms,newdata,na.action=na.action,
xlev=object$xlevels) : factor X has new levels 2
X
是用户指定的预测器lm()
。我不确定 2 代表什么,我猜是新关卡的数量(?)。