See:
http://www.mail-archive.com/r-help at stat.math.ethz.ch/msg09925.html
On 10/9/06, Jonathan Williams
<jonathan.williams at pharmacology.oxford.ac.uk>
wrote:> Dear R Helpers,
>
> I want to test if a procedure within a loop has produced an error or not.
> If the procedure has produced an error, then I want to ignore its result.
> If it has not produced an error, then I want to use the result. The problem
> In order to run the loop without crashing if the procedure produces an
> error,
> I place the routine inside a try() statement.
>
> So, suppose I am trying to find the predicted values for a regression in a
> loop
> If the procedure now produces an error, I can detect it with:-
>
> if grep('Error', result)<1 #and so choose not use the result
>
> but if the procedure does not produce an error, then "if
grep('Error',
> result)<1"
> now produces the result logical(0) and the loop then fails with the message
>
> set.seed(1)
> cumulator=rep(0,100)
> for (i in 1:100){
> y1=rnorm(100)
> x0=rbinom(100,1,0.02)
> x1=rbinom(100,1,0.5)
> x2=rbinom(100,1,0.5)
> x1[x0]=NA
> dat=data.frame(y1,x1)
> result=try(lm(y1~x1, na.action=na.fail, data=dat),T); print(result)
> x1=x2; dat2=data.frame(x1)
> if (grep('Error',result)<1)
cumulator=cumulator+predict(result,x2)
> }
>
> The above runs and rejects the 'result' until i=6, when lm runs and
> grep('Error', result) gives:-
>
> Error in if (grep("Error", pred1) < 1) for (i in
labels(pred1))
> votes[rownames(votes) == :
> argument is of length zero
>
> but, predict(result,dat2) runs fine.
>
> So, how do I trap or use the 'logical(0)' state of
grep('Error', result) to
> obtain
> and accumulate my result?
>
> Thanks in advance for your help
>
> Jonathan Williams
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>