Liste d'expressionsJ'aimerais créer une liste qui ressemble à ceci.
LL = {parm1 = "x", valeur1 = 5, parm2 = "y", valeur2 = 3, ...}
La longueur peut varier, donc je le fais dans une boucle et j'essaie d'utiliser l'index de boucle dans le nom de la variable.
Mais j'ai du mal à créer ce terme (par exemple parm1).
Quelle est la meilleure façon de procéder?
Re : Liste d'expressionsVoici une autre façon de procéder. Semblable à votre solution finale.
// LL = {parm1 = "x", value1 = 5, parm2 = "y", value2 = 3, ...}
// Assume parameters and value labels are sequential
parm_list = {"x", "y", "z"};
value_list = {5, 3, 1};
pval_list = {};
for (i = 1, i <= nitems(parm_list), i++,
one_parm = evalinsert("\[parm^i^ = "^parm_list[i]^"]\");
one_val = evalinsert("\[value^i^ = ^value_list[i]^]\");
insertinto(pval_list, parse(one_parm));
insertinto(pval_list, parse(one_val));
);
pval_list;Re : Liste d'expressionsil me semble vraiment que vous pourriez faire une liste de tableaux associatifs ou de tableaux associatifs imbriqués si vous le souhaitez. Ensuite, vous n'avez pas besoin d'analyser les chaînes pour créer votre structure de données et je trouve cela BEAUCOUP plus facile à lire (lorsque vous analysez des chaînes pour créer des variables, vous perdez la possibilité de simplement les exécuter ou de passer la souris dessus pour les voir. )
Names Default to here(1);
testparam1 = 1;
fitparam1 = 2;
Rsq1 = 3;
testparam2 = 4;
fitparam2 = 5;
Rsq2 = 6;
//list of associative arrays
Laa = {};
//param1 insert
insert into(Laa, associative array({"TestParam", "FitParam", "Rsq"}, Evallist({testparam1, fitparam1, Rsq1})) );
//param2 insert
insert into(Laa, associative array({"TestParam", "FitParam", "Rsq"}, Evallist({testparam2, fitparam2, Rsq2})) );
show(Laa[1]["TestParam"], Laa[2]["TestParam"]);
//nested associative arrays
Naa = associative array();
//param1 insert
Naa["name1"] = associative array({"TestParam", "FitParam", "Rsq"}, Evallist({testparam1, fitparam1, Rsq1}));
//param2 insert
Naa["name2"] = associative array({"TestParam", "FitParam", "Rsq"}, Evallist({testparam2, fitparam2, Rsq2}));
show(Naa["name1"]["FitParam"], Naa["name2"]["FitParam"]);
Retour
Laa[1]["TestParam"] = 1 ;
Laa[2]["TestParam"] = 4 ;
Naa["name1"]["FitParam"] = 2 ;
Naa["name2"]["FitParam"] = 5 ;
l'avantage de l'imbrication n'étant vraiment que si vous vous attendez à ce que l'ordre change et que la position compte.
Re : Liste d'expressionsJe ne noterai pas ce qui est le mieux.Mais j'ai trouvé les deux exemples utiles pour comprendre comment tout cela fonctionne.
Au final, mon code ressemblait à ceci.Remarque : cela ne fonctionnera pas tel quel car je ne définis pas certaines choses ici.
C'est dans une boucle avec l'indice k.Une liste de liste stocke tous les résultats.
LList = {} ;
Insérer dans (Liste, Analyser ( "TestParam" || carboniser (k)|| "=\!"" ||Modes[k]|| "\ !"" )); // Tester le nom du paramètre
Insérer dans (Liste, Analyser ( "FitParam" || carboniser (k)|| "=\!"" ||dtStats[ 1 , 1 ]|| "\ !"" )); // Ajuster le nom du paramètre
Insérer dans (Liste, Analyser ( "Rq" || carboniser (k)|| "=" || carboniser (dtStats[ 1 , 3 ]))); // Rcarré
Re : Liste d'expressionsLe meilleur moyen?" Essayez-vous de déclencher une bagarre dans la communauté JMP ?
Il existe plus d'une façon de résoudre ce problème. Le choix du meilleur chemin dépend de plusieurs critères. Voici une autre solution candidate qui est différente de la solution de Jim mais pas nécessairement meilleure.
Names Default To Here( 1 );
// List the variable names
name list = { "Cool", "Awesome", "Bad" };
// List the variable values
value list = { 1, 2, 3 };
// Prepare an empty container for assignments
name value list = {};
// Make the list of assignments
For( i = 1, i <= N Items( name list ), i++,
// Start with function with no arguments
assign expr = Expr( Assign() );
// Add first argument
Insert Into( assign expr, name list[i] );
// Add second argument
Insert Into( assign expr, value list[i] );
// Add function to assignment list
Insert Into( name value list, Name Expr( assign expr ) );
);
Show( name value list );
Maintenant, vous avez le choix. (Je parie que vous en avez un autre à tout moment.) Vous choisissez.
Re : Liste d'expressionsVoici un morceau de code similaire pour générer une liste
Names Default To Here( 1 );
dt = New Table( "Untitled 36", Add Rows( 3 ),
New Column( "Column 1", Character, "Nominal",
Set Values( {"1", "2", "3"} ) ) );
NamesList = {"Cool", "Awsome", "Bad"};
ValuesList = Column( dt, 1 ) << get values;
NamesValuesList = {};
// Build the Value Labels List
For( i = 1, i <= N Items( NamesList ), i++,
Insert Into( namesvalueslist,
Parse( ValuesList[i] || " = \!"" || NamesList[i] || "\!"" ) )
);