この記事の最後にあるスクリプトは、基本的に私がやりたいことを実行します (つまり、時間 = 0 に対して Y 値が 100 である列を見つける) だけでなく、少し不快なログ メッセージも生成します (前にトラップに):
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.
このメッセージは、ループ構築の一部として既に一度選択された後、再度選択されたすべての列のログに出力されます。 スクリプティングに比較的慣れていない私は、主に次の点に注意する必要があります。
- このログ メッセージは、絶対に避けるべきものですか? また、問題が発生する可能性はありますか? 最終的にはより大きなテーブルを処理することになるため、このログ メッセージは 1 回のスクリプト実行で何百回も出力される可能性があります。
- 時間 = 0 の行ごとに Y 値 = 100 を持つテーブル内のすべての列を見つけるよりスマートな方法はありますか? (私の場合、多くの列を持つテーブルを処理します。そのうちのいくつかには、時間 =0 で 100% rel に正規化された結果が含まれています。 これらは私が興味を持っているコラムです。)
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
)
)
)
)
);