这是我的问题:
我正在使用循环在对象列表上运行函数。大多数对象工作正常并产生所需的输出。但是,其他一些会产生错误,当这种情况发生时,循环会停止运行。
我试图找到一种方法,每次循环找到一个给出错误的对象时,循环都会忽略有问题的对象并转到下一个对象。所以循环可以运行到整个列表的末尾,只产生运行良好的对象的输出。
我正在实现这样的循环:
for(i in n:m){
myfunction
}
谢谢你!
只需将可能失败的内容包装起来try()
for(i in n:m){
out[[i]] = try( myfunction )
}
out
可能更好的是把try()
inside myfunction()
。但我不知道该功能需要什么。有时一个好的策略是将输出预先分配给 NA,然后在 for 循环开始时询问:
if("conditionwherefunctionfails") i = i+1
那将跳过该迭代并继续您的循环。
几乎没有什么可以继续的,但是您只需要一个 if 语句来识别麻烦的对象,并且什么都不做,否则执行您的函数:
for(i in n:m){
if ( i != ... ) { //replace ... with NaN or null, or whatever is causing the error
myfunction(i)
}
}
由于信息有限,我无法告诉您应该用什么代替...