Liste der AusdrückeIch möchte eine Liste erstellen, die so aussieht.
LL = {Parameter1 = "x", Wert1 = 5, Parameter2 = "y", Wert2 = 3, ...}
Die Länge kann variieren, also 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).
Was ist der beste Weg, dies zu tun?
Betreff: Liste der AusdrückeHier ist ein anderer Weg, 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 könnten Sie eine Liste assoziativer Arrays oder verschachtelter assoziativer Arrays erstellen, wenn Sie möchten. Dann müssen Sie keine Strings parsen, um Ihre Datenstruktur zu erstellen, und ich finde es VIEL einfacher zu lesen (wenn Sie Strings parsen, um Variablen zu erstellen, verlieren Sie die Möglichkeit, sie einfach auszuführen oder mit der Maus darüber zu fahren, um sie zu sehen. )
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 wirklich nur darin, dass Sie erwarten, dass sich die Reihenfolge ändert und die Position wichtig ist.
Betreff: Liste der AusdrückeIch werde nicht bewerten, was am besten ist.Aber ich fand beide Beispiele nützlich, um zu verstehen, wie 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 dem Index k.Eine Liste mit Listen speichert alle Ergebnisse.
LListe = {};
Einfügen in (Liste, Analysieren ( "Testparam" || verkohlen (k)|| "=\!"" ||Modi[k]|| "\!"" )); // Parametername testen
Einfügen in (Liste, Analysieren ( "FitParam" || verkohlen (k)|| "=\!"" ||dtStats[ 1 , 1 ]|| "\!"" )); // Parametername anpassen
Einfügen in (Liste, Analysieren ( "Rq" || verkohlen (k)|| "=" || verkohlen (dtStats[ 1 , 3 ]))); // RQuadrat
Betreff: Liste der AusdrückeDer beste Weg?" Versuchen Sie, einen Kampf in der JMP-Community zu beginnen?
Es gibt mehr als einen Weg, dieses Problem zu lösen. Die Entscheidung, welcher Weg der beste ist, hängt von mehreren Kriterien ab. Hier ist ein weiterer Lösungskandidat, der 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 eine andere.) Sie wählen.
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] || "\!"" ) )
);