utilisation de "pour chaque ligne" avec le nom de colonne d'une liste<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Salut tout le monde
Je travaille sur un moyen de nettoyer une table générée par l'utilisateur et je rencontre un problème : le code se compile correctement, mais cela ne fonctionne pas
J'ai un tableau avec des colonnes inconnues (lire : multiples, variables, écrites à la main par l'utilisateur) à la fois en nombres et en noms.
Je voudrais effectuer une standardisation simple, disons peaufiner les valeurs des espaces indésirables et des erreurs majuscules.
je génère donc une liste avec les noms de colonnes, mets en place un cycle et place un pour chaque ligne à l'intérieur.
Il compile, mais ne fonctionne pas. toute suggestion? le code est ici
user_page = ouvert ("\user\page.csv", labels(1));
full_list = user_page <
pour (i=1,i
sclmn = ":"||liste_complète ;
pour chaque ligne (sclmn = trim (sclmn));
pour chaque ligne (sclmn = minuscule (sclmn));
);
J'ai essayé plusieurs variantes, en utilisant une référence de colonne au lieu d'une chaîne, ou en utilisant Eval(), mais toutes n'ont pas réussi à se compiler. Cette mise en page est la seule à être compilée, mais elle ne fonctionne toujours pas. Quelqu'un peut-il m'aider à comprendre pourquoi ?
Re : utilisation de "pour chaque ligne" avec le nom de colonne d'une listeSelon le JMP Scripting Guide : "Utilisez toujours un indice sur une référence de colonne pour accéder aux valeurs dans les cellules des colonnes." Cela semble être la meilleure pratique, bien qu'il existe des exceptions où cela fonctionne sans les crochets, comme vous le soulignez.
Re : utilisation de "pour chaque ligne" avec le nom de colonne d'une listemerci, la deuxième approche a fonctionné. (Je préfère ça car j'utilise la même liste pour autre chose)
J'ai essayé la méthode column() bien avant de poster, mais cela n'a pas fonctionné sans le []
J'ai également parcouru le débogueur, et il a été correctement tracé comme référence de colonne au lieu d'une chaîne, et je ne comprends toujours pas pourquoi il a besoin du []. si vous utilisez une version câblée, disons
pour chaque ligne (:update_01 = trim (:update_01));
ça marche sans le [], et il me semble qu'il n'y a aucune référence là-dessus dans l'aide ou dans les livres...
en tout cas, maintenant ça marche. merci!
Re : utilisation de "pour chaque ligne" avec le nom de colonne d'une listeL'astuce consiste à faire en sorte que JMP reconnaisse sclmn en tant que colonne. Dans le script actuel, sclmn n'est qu'une chaîne. De plus, ForEachRow() nécessite souvent un index vide [ ] après les variables de colonne.
Voici deux façons de procéder :
À partir de la liste des noms de colonnes :
liste_complète = page_utilisateur << Obtenir les noms de colonnes () ;
Pour ( je = 1 , je <= N articles ( liste_complète ) , je ++,
sclmn = liste_complète [ je ] ;
Pour chaque ligne ( sclmn [] = Garniture ( sclmn [] ) ) ;
Pour chaque ligne ( sclmn [] = Minuscule ( sclmn [] ) ) ;
) ;
Ou à partir de la liste des noms de colonnes sous forme de chaînes :
liste_complète = page_utilisateur << Obtenir les noms de colonnes ( chaîne ) ;
Pour ( je = 1 , je <= N articles ( liste_complète ) , je ++,
sclmn = Colonne ( liste_complète [ je ] ) ;
Pour chaque ligne ( sclmn [] = Garniture ( sclmn [] ) ) ;
Pour chaque ligne ( sclmn [] = Minuscule ( sclmn [] ) ) ;
) ;