Hi,
Ich baue eine einfache Schnittstelle für den Benutzer und habe ein Fenster, um einige Optionen mithilfe von Kontrollkästchen festzulegen.
Ich bin derzeit in der Lage, die erste Aufruffunktion durchzuführen und das Skript filtert die Zeichenfolge "SE" aus den Spalten und generiert Ausreißer. Wenn ich jedoch das 2. und 3. Kontrollkästchen ankreuze, wird die Funktion nicht aufgerufen
Ich habe folgendes Skript versucht:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Water Treatment.jmp");
check_list = {"SS", "SE", "PH"};
todo_list = {};
nw = new window("Checkboxes", << modal(),
my_cb = checkbox(check_list),
panelbox("Actions",
hlistbox(
button box("OK",
keep_going = 1;
todo_list = my_cb << get selected;
),
button box("Cancel", keep_going = 0)
),
),
);
nt = nitems(todo_list);
colList = dt << Get Column Names("String");
filteredCols = {};
if (keep_going & nt > 0,
for (i = 1, i <= nt, i++,
if (todo_list[i] == "SS",
// Call function for One step
For(i = 1, i <= N Items(colList), i++,
If(Contains(colList[i], "SS"), Insert Into(filteredCols, colList[i]))
);
obj = dt <<
Explore Outliers(
Y((Eval(filteredCols) )));
obj << Quantile Range Outliers;
obj << Select Rows(All);
,
todo_list[i] == "SE",
// Call function for Two step
For(i = 1, i <= N Items(colList), i++,
If(Contains(colList[i], "SE"), Insert Into(filteredCols, colList[i]))
);
obj = dt <<
Explore Outliers(
Y((Eval(filteredCols) )));
obj << Quantile Range Outliers;
obj << Select Rows(All);
,
todo_list[i] == "PH",
// Call function for Three step
For(i = 1, i <= N Items(colList), i++,
If(Contains(colList[i], "PH"), Insert Into(filteredCols, colList[i]))
);
obj = dt <<
Explore Outliers(
Y((Eval(filteredCols) )));
obj << Quantile Range Outliers;
obj << Select Rows(All);
);
);
);Auf der Suche nach einigen Rückmeldung
Vielen Dank,
Jack
Sie verwenden den Index "i" für alle Ihre For()-Schleifen.Das bedeutet, dass der Wert von "i" überall geändert wird.Sie müssen unterschiedliche Variablen für Ihre For()-Schleifen verwenden, wenn sich eine Schleife innerhalb einer Schleife befindet.