Comment lire un tableau dans une liste ?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Disons que j'ai une table "dt" où les noms de colonnes n'ont aucun sens.
Et j'ai une table "dt_source" avec deux colonnes - une colonne avec un nom dénué de sens et l'autre avec un nom significatif correspondant.
J'essaie d'écrire un script qui renommerait les colonnes dénuées de sens en significatives.
Les colonnes peuvent être différentes, je vais donc créer une table principale "dt_source" avec les valeurs correspondantes.
Maintenant, j'ai un script prêt qui prend les noms dénués de sens et significatifs dans une liste contenue dans le script et renomme les colonnes pour chaque paire si un tel nom dénué de sens existe.
Je veux pouvoir prendre ces paires correspondantes qui ne figurent pas dans la liste saisie :
name_in={"col1", "col2"};
name_out={"Âge", "Taille")
mais à partir d'une table.
Comment lire dt_name_source en deux listes : name_in et name_out ?
Pour l'instant j'ai ceci :
Noms par défaut ici ( 1 ) ;
Essayer ( dt_source = Tableau de données ( "Changement de nom.jmp" ) , Lancer ( "Essayer d'ouvrir la table de données" )) ;
Si ( Pas ( Est scriptable ( dt_source ) ) ,
dt_source = Ouvrir ( "Changement de nom.jmp" ) , dt_source = Tableau de données ( "Changement de nom.jmp" ) ;
) ;
Tableau de données actuel ( dt_source ) ;
nom_in = Liste () ;
nom_out = Liste () ;
col_name_in = Colonne ( "nom_in" ) ;
col_name_out = Colonne ( "nom_out" ) ;
je = 0 ;
Pour chaque ligne ( nom_in [ je ] = col_name_in [] ; nom_out [ je ] = col_name_out [] ; je ++ ) ;
Mais alors ça ne lui plaît pas :
Problème d'indice{1} lors de l'accès ou de l'évaluation de 'Assign', name_in = /*###*/col_name_in[] /*###*/
Si j'essaye juste une variable
Pour chaque ligne ( nom_in = col_name_in [] ; nom_out = col_name_out [] ) ;
Alors c'est OK, mais c'est juste une variable prenant des valeurs différentes au fur et à mesure du cycle.
Et j'ai besoin d'une liste.
Quelqu'un peut-il donner une idée sur la façon de gérer cela ?
Merci!
Re : Comment lire un tableau dans une liste ?Je ferais probablement les choses un peu différemment :
Noms par défaut ici ( 1 );
// Pointeur vers la table de données à modifier
dt = data table("Le nom de la table à modifier");
pour(i=1, i<=N éléments(name_out), i++,
Si (essayez (colonne (dt, nom_in) ) << obtenir le nom, "") != "", colonne (dt, nom_in ) << Définir le nom (name_out ));
);
Re : Comment lire un tableau dans une liste ?Jim,
Cela semble bien fonctionner pour l'instant. Faites-moi savoir si c'est une bonne façon de faire les choses :
pour(i=1, i<=N éléments(name_out), i++,
montrer(je); Si( !Est manquant( Est scriptable( Essayez( Colonne( nom_in ) ) ) ), col=Colonne(nom_in )< );
show(col); montrer(i))
) ;
Re : Comment lire un tableau dans une liste ?Jim,
Merci beaucoup pour la réponse. Cela fonctionne très bien.
Cependant, j'ai constaté que mon code de renommage ne fonctionnait pas s'il n'y avait pas de colonnes avec l'un des noms de name_in (et il y aurait souvent des colonnes dans la table qui n'auraient pas TOUS les noms de la table NameChanging.jmp).
Pour l'instant j'ai ceci :
pour(i=1, i<=N éléments(name_out), i++,
montrer(je); Essayez(col=Colonne(nom_in )< ), Throw("AUCUNE COLONNE TROUVÉE");
show(col)); montrer(je)
)
Mais le cycle s'interrompt après la première itération lorsqu'il ne trouve pas le prénom de name_in dans le tableau.
Re : Comment lire un tableau dans une liste ?Je pense que le script suivant obtiendra les valeurs dans les listes dont vous avez besoin :
Noms par défaut ici ( 1 ) ;
Si ( Essayer ( dt_source << obtenir un nom, "" ) != "Changement de nom" ,
dt_source = Ouvrir ( "Changement de nom.jmp" )
) ;
nom_in = dt_source : nom_in << obtenir des valeurs ;
nom_out = dt_source : nom_out << obtenir des valeurs ;