Création de colonnes dans une boucle<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Salut,
Donc dans mon script, j'ai une boucle qui crée des colonnes, ça marche très bien, mais je veux l'améliorer un peu. J'ai des données qui se présentent sous la forme (nombre)|(caractère)|(nombre)|(caractère) etc. J'ai donc des types de données alternés et je voudrais les imprimer sous leur forme normale. À l'heure actuelle, les colonnes sont sous forme numérique, donc je ne vois aucune des données de caractères. Mais si je le change au format caractère, je perds la structure de données numérique. J'ai donc cette boucle :
For(j = 1, j <= nitems(pinList), j++,
dt2 << Nouvelle colonne (pinList, Numérique, Continu, Format("Meilleur",12) );
dt2 << Nouvelle Colonne(pinList[j++], Caractère, Nominal);
);
Où je définis tous les noms de colonnes dans mon tableau pinList. Cela fonctionne, sauf pour le fait qu'il duplique l'entrée à pinList(ce qui dans ce cas, n'est en fait pas une mauvaise chose). le vrai problème survient lorsque j'essaie d'exécuter une autre boucle après celle-ci qui analyse ces données délimitées par un '|' et placez-le dans les nouvelles colonnes.
Pour (i = 1, i <= nrows(dt2), i++,
one_test_result_list = mots(column(dt2,"Test_Result") , "|");
Pour (k = 1, k <= nitems(one_test_result_list), k++,
Colonne(dt2, pinList) = one_test_result_list;
);
);
La dernière ligne s'exécute une fois, puis s'interrompt car l'entrée suivante dans pinLista un "2" après parce que lorsque les colonnes ont été créées, il duplique chaque nom. Je ne sais pas comment faire fonctionner cela. Je peux définir tous les noms que je veux dans le tableau pinList mais je veux alterner les types de colonnes numériques et de caractères.
Toute aide est grandement appréciée! Merci!!
Re : Créer des colonnes dans une boucleJ'avais essayé une variante de cela, mais j'ai mis le j++ avant la deuxième nouvelle ligne de colonne. J'ai également utilisé l'instruction if pour parcourir ma liste de données analysées. Je les ai donc combinés comme ceci :
Pour ( j = 1 , j <= N articles ( pinList ) , j ++,
dt2 << Nouvelle colonne ( pinList [ j ] , Numérique , Continu , Format ( "Meilleur" , 12 ) ) ;
dt2 << Nouvelle colonne ( pinList [ j + 1 ] , Personnage , Nominal ) ; // Crée une colonne pour j+1.
j ++ ; // Puis itérer par j=j+1.
) ;
Pour ( je = 1 , je <= N lignes ( dt2 ) , je ++,
one_test_result_list = Mots ( Colonne ( dt2 , "Résultat du test" ) [ je ], "|" ) ;
Pour ( j = 1 , j <= N articles ( un_test_result ) , j ++,
Si ( Modulo ( j , 2 ) == 1 ,
Colonne ( dt2, liste des broches [ k ] ) [ je ] = Numéro ( one_test_result_list [ k ]) ; // Exécuter pour j impair
Colonne ( dt2, liste des broches [ k ] ) [ je ] = one_test_result_list [ k ] ; // Exécuter pour j pair
);
);
) ;
Cela fonctionne parfaitement. Ainsi, il s'assure que les résultats numériques sont imprimés sous forme de nombres et que les caractères sont dans leur format normal. Je vous remercie beaucoup pour votre aide!!
Re : Créer des colonnes dans une boucleSalut sophiaw,
Si je comprends bien votre script, je pense que le problème provient de votre utilisation de j++ dans le corps de votre boucle, car j++ n'itérera j qu'après que la boucle aura terminé une itération.Je peux penser à plusieurs façons de contourner cela.Une méthode consiste à remplacer j++ par j+1, puis à ajouter une ligne distincte pour j++.L'autre méthode consiste à ajouter une instruction If() pour créer des commandes séparées pour j pair et impair.
Veuillez consulter les exemples 1 et 2 pour un exemple de la façon dont i++ fonctionne dans le corps d'une boucle.
J'espère que ça aide.
Noms par défaut ici ( 1 ) ;
dt2 = Nouveau tableau ( "dt2" , Ajouter des lignes ( 20 ) ) ;
pinList = { "UNE" , "B" , "C" , "RÉ" , "E" , "F" } ;
Pour ( j = 1 , j <= N articles ( pinList ) , j ++,
dt2 << Nouvelle colonne ( pinList [ j ] , Numérique , Continu , Format ( "Meilleur" , 12 ) ) ;
dt2 << Nouvelle colonne ( pinList [ j + 1 ] , Personnage , Nominal ) ; // Crée une colonne pour j+1.
j ++ ; // Puis itérer par j=j+1.
) ;
Pour ( j = 1 , j <= N articles ( pinList ) , j ++,
Si ( Modulo ( j , 2 ) == 1 ,
dt2 << Nouvelle colonne ( pinList [ j ] , Numérique , Continu , Format ( "Meilleur" , 12 ) ) , // Exécuter pour j impair.
dt2 << Nouvelle colonne ( pinList [ j ] , Personnage , Nominal ) // Exécuter pour j pair.
)
) ;
// Exemple 1.
Pour ( je = 1 , je <= dix , je ++,
Imprimer ( je ) ;
Imprimer ( je ++ ) ;
) ;
// Exemple 2.
Pour ( je = 1 , je <= dix , je ++,
Imprimer ( je ) ;
Imprimer ( je + 1 ) ;
je ++ ;
) ;