Je dois programmer un algo un peu compliqué, et j'ai un "twist" avec les boucles for que je ne sais pas résoudre.
La base de ma question est simple, et suit la syntaxe suivante :
Code : Tout sélectionner
> for (i in 1:3) cat(i,"\n")
1
2
3
Si j'écrivais ceci en C, par exemple, j'aurais :
Code : Tout sélectionner
for (i = 1; i <= 3; i++)
printf ("%d\n", i);
1
2
3
Si la boucle doit aller dans l'autre sens, en C, par exemple, aucun tour de boucle ne se fait, et c'est le comportement souhaité :
Code : Tout sélectionner
for (i = 3; i <= 1; i++)
printf ("%d\n", i);
Ce qui est très pratique, algorithmiquement. Ce n'est pas le cas dans R, où des tours de boucle se font tout de même dans l'autre sens :
Code : Tout sélectionner
> for (i in 3:1) cat(i,"\n")
3
2
1
Ceci est du à l'argument "by" de seq() (fonction qui est elle-même un argument du for()) qui est calculé automatiquement pour décroitre si nécessaire. Et, évidement, je ne peux pas forcer le sens à ma guise :
Code : Tout sélectionner
> seq(3,1,by=1)
Error in seq.default(3, 1, by = 1) : signe incorrect de l'argument 'by'
Je peux évidement - et facilement - rajouter des lignes de code pour bloquer les tours de boucle si nécessaire, mais je m'interrogeais de savoir s'il y aurait un moyen syntaxique pour que R, à cet égard, fonctionne comme d'autres langages de programmation, comme le C par exemple. Je n'ai rien trouvé sur ce point.
D'avance merci pour toute aide sur cette question.
Eric.