Liste der AusdrückeIch würde gerne eine Liste erstellen, die so aussieht.
LL = {parm1 = „x“, Wert1 = 5, parm2 = „y“, Wert2 = 3, ...}
Die Länge kann variieren, daher mache ich es in einer Schleife und versuche, den Schleifenindex im Variablennamen zu verwenden.
Aber ich habe Schwierigkeiten, diesen Begriff zu erstellen (z. B. parm1).
Wie geht das am besten?
Betreff: Liste der AusdrückeHier ist eine andere Möglichkeit, es zu tun. Ähnlich wie bei Ihrer endgültigen Lösung.
// 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;Betreff: Liste der AusdrückeFür mich sieht es wirklich so aus, als ob Sie eine Liste assoziativer Arrays oder verschachtelter assoziativer Arrays erstellen könnten, wenn Sie möchten. Dann müssen Sie keine Zeichenfolgen analysieren, um Ihre Datenstruktur zu erstellen, und ich finde, dass sie VIEL einfacher zu lesen ist (wenn Sie Zeichenfolgen analysieren, um Variablen zu erstellen, verlieren Sie die Möglichkeit, sie einfach auszuführen oder mit der Maus darüber zu fahren, um sie anzuzeigen. )
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"]);
kehrt zurück
Laa[1]["TestParam"] = 1;
Laa[2]["TestParam"] = 4;
Naa["name1"]["FitParam"] = 2;
Naa["name2"]["FitParam"] = 5;
Der Vorteil der Verschachtelung besteht eigentlich nur darin, dass man davon ausgeht, dass sich die Reihenfolge ändert und die Position von Bedeutung ist.
Betreff: Liste der AusdrückeIch werde nicht bewerten, welches das Beste ist.Aber ich fand beide Beispiele nützlich, um zu verstehen, wie das alles funktioniert.
Am Ende sah mein Code so aus.Hinweis: Dies wird nicht so ausgeführt, wie es ist, da ich einige Dinge hier nicht definiere.
Dies ist in einer Schleife mit Index k.Eine Liste speichert alle Ergebnisse.
LList = {};
Einfügen in (LList, Analysieren ( „TestParam“ || verkohlen (k)|| "=\!"" ||Modi[k]|| „\!““ )); // Testparametername
Einfügen in (LList, Analysieren ( „FitParam“ || verkohlen (k)|| "=\!"" ||dtStats[ 1 , 1 ]|| „\!““ )); // Parameternamen anpassen
Einfügen in (LList, Analysieren ( „Rsq“ || verkohlen (k)|| "=" || verkohlen (dtStats[ 1 , 3 ]))); // Rsquared
Betreff: Liste der AusdrückeDer beste Weg?" Versuchen Sie, einen Kampf in der JMP-Community anzuzetteln?
Es gibt mehr als eine Möglichkeit, dieses Problem zu lösen. Die Entscheidung, welcher Weg der beste ist, hängt von mehreren Kriterien ab. Hier ist eine weitere mögliche Lösung, die sich von Jims Lösung unterscheidet, aber nicht unbedingt besser ist.
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 );
Jetzt haben Sie die Wahl. (Ich wette, Sie haben jeden Moment noch etwas Zeit.) Sie haben die Wahl.
Betreff: Liste der AusdrückeHier ist ein ähnlicher Code zum Generieren einer 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] || "\!"" ) )
);