2013-05-18 3 views
1

Je lance une boucle for pour faire Arima en utilisant R. Ma boucle pour changer la valeur p, d, q & arima stocker la valeur p-d-q dans une trame de données. Mais dans ce processus, certaines erreurs de lancement de valeur p-d-q & ma boucle for est arrêtée. Je ne veux pas que ma boucle for s'arrête au milieu sans terminer les boucles complètes. Est-il possible de ne pas interrompre mon pour & stocker toute la valeur p-d-q sauf l'erreur?Gestion des erreurs dans R

+0

Outre le simple 'try' Ricardo proposé (ce qui est tout ce que j'ai jamais utilisé), vous pouvez regarder cette question: http: //stackoverflow.com/questions/2622777/exception-handling-in-r – Frank

Répondre

3

vous recherchez try. (Ou Altenatively, tryCatch)

Je suppose que vous utilisez quelque chose comme ceci:

for (p in ..) 
    for (q in...) 
    ... 

    mod <- arima(x, c(p,d,q)) 

Si oui, modifiez simplement que la dernière ligne à

mod <- try(arima(x, c(p,d,q)), silent=TRUE) 
# the silent is optional 

Cependant, vous sont probablement mieux de faire:

pdq <- expand.grid(p, d, q) 
apply(pdq, 1, function(o) try(arima(x, o), silent=TRUE)) 

Enfin, assurez-vous que vous n'êtes pas seulement la pêche http://xkcd.com/882/

+0

Merci pour votre réponse Ricardo. J'utilise le code suivant après avoir modifié ce que vous avez suggéré –

+0

Le code est disponible à l'adresse https://skydrive.live.com/#cid=FF431A41D367C7D9&id=FF431A41D367C7D9%21105 J'utilise toujours l'erreur suivante Erreur dans l'ajustement $ aic: $ operator est invalide pour les vecteurs atomiques en outre: des messages d'avertissement: 1: Dans log (s2): NaN produit 2: log (s2): NaN produit 3: log (s2): NaN produit 4: Connexion (s2): NaNs produit Pouvez-vous s'il vous plaît m'aider à résoudre l'erreur? –

+0

l'erreur vous dit que '$' ne fonctionne pas avec 'fit'. Je suppose que vous attribuez quelque chose qui ne va pas. S'il vous plaît comprendre que demander à quelqu'un de passer au crible votre code est une commande relativement importante. Au lieu de cela, pensez à essayer de résoudre le problème vous-même et lorsque vous rencontrez un problème spécifique, limitez-le à la ou aux sections incriminées, puis posez une question concrète à ce sujet. –