Hallo,
Ich entwickle eine einfache Benutzeroberfläche mit einem Fenster, in dem der Benutzer mithilfe von Kontrollkästchen verschiedene Optionen festlegen kann.
Aktuell kann ich die erste Funktion aufrufen, und das Skript filtert die Zeichenkette „SE“ aus den Spalten und generiert Ausreißer. Wenn ich jedoch das zweite und dritte Kontrollkästchen aktiviere, wird die Funktion nicht aufgerufen.
Ich habe folgendes Skript ausprobiert:
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);
);
);
);
Ich würde mich über Feedback freuen.
Danke,
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.