Das Skript am Ende dieses Beitrags macht im Grunde das, was ich will (dh Spalten finden, in denen ein Y-Wert 100 für Zeit = 0 ist), aber es generiert auch eine Protokollnachricht, die mir ein wenig unangenehm ist (nachdem ich step vorher in Fallen):
A message with an empty Boolean argument enabled an option that was already enabled. That option remains enabled. In previous versions of JMP, this would have disabled the option.
Diese Nachricht wird für jede erneut ausgewählte Spalte in das Protokoll gedruckt, nachdem sie im Rahmen meiner Schleifenkonstruktion bereits einmal ausgewählt wurde. Als jemand, der relativ neu in der Skripterstellung ist, habe ich folgende Hauptanliegen:
- Ist diese Protokollnachricht etwas, das ich unbedingt vermeiden sollte, und werde ich in Schwierigkeiten geraten? Irgendwann werde ich größere Tabellen verarbeiten, daher kann diese Protokollnachricht Hunderte Male für eine einzelne Skriptausführung gedruckt werden.
- Gibt es eine intelligentere Möglichkeit, alle Spalten in einer Tabelle zu finden, die einen Y-Wert = 100 für jede Zeile haben, in der Zeit = 0 ist? (In meinem Fall werde ich Tabellen mit vielen Spalten verarbeiten, von denen einige Ergebnisse enthalten, die zum Zeitpunkt = 0 auf 100 % rel. normalisiert sind. Das sind die Spalten, die mich interessieren.)
Names Default To Here( 1 );
// table required for example
dt = New Table( "Results (absolute & relative) vs time",
Add Rows( 8 ),
New Column( "time",
Numeric,
Set Values( [0, 1, 2, 3, 0, 1, 2, 3] ),
),
New Column( "Y1_absolute",
Numeric,
Set Values( [7, 8, 1, 9, 0.2, 0.4, 0.65, 0.98] ),
),
New Column( "Y1-relative",
Numeric,
Set Values( [100, 114, 14, 129, 100, 200, 325, 490] ),
),
New Column( "Y2_absolute",
Numeric,
Set Values( [12, 6, 4, 0, 80, 90, 120, 75] ),
),
New Column( "Y2_relative",
Numeric,
Set Values( [100, 50, 33, 0, 100, 113, 150, 94] ),
)
);
// selecting columns where for :time == 0 a Y-value == 100 is found
For( i = 1, i <= N Row( dt ), i++,
For( j = 1, j <= N Col( dt ), j++,
If( Column( j )[i] == 0,
For( k = 1, k <= N Col( dt ), k++,
If( Column( k )[i] == 100,
Column( k ) << Set Selected
)
)
)
)
);