我真的不了解tryCatch
的工作原理。特别是存储错误消息的最后一部分。 Stackoverflow上有很多关于如何使用tryCatch
的帖子,但解决方案通常只是发布一条错误消息然后继续。我想存储发生错误的for循环的索引,所以我可以稍后再回到它们。我正在使用tryCatch
flag = NULL
for(i in 1:10) {
do something that can cause an error
if (error occurs) flag=c(flag,i) and move on to the next iteration
}
理想情况下,我希望flag
在错误期间存储索引。
答案 0 :(得分:2)
您可能必须使用<<-
分配给父环境,尽管这可能被视为不良做法。例如:
a <- as.list(1:3)
flag <- integer()
for (i in 1L:5L){
tryCatch(
{
print(a[[i]])
},
error=function(err){
message('On iteration ',i, ' there was an error: ',err)
flag <<-c(flag,i)
}
)
}
print(flag)
返回:
[1] 1
[1] 2
[1] 3
On iteration 4 there was an error: Error in a[[i]]: subscript out of bounds
On iteration 5 there was an error: Error in a[[i]]: subscript out of bounds
> print(flag)
[1] 4 5
这有帮助吗?