這篇文章末尾的腳本基本上完成了我想要它做的事情(即,查找 Y 值為 100 且時間 = 0 的列),但它也會生成一條讓我有點不舒服的日誌消息(已經進入陷阱之前):
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.
在作為循環構造的一部分已經選擇了一次之後,此消息將針對再次選擇的每一列打印到日誌中。 作為一個對腳本比較陌生的人,我必須主要關注:
- 這個日誌消息是我絕對應該避免的嗎?我會遇到麻煩嗎? 我最終將處理更大的表,因此對於單個腳本執行,可能會打印數百次此日誌消息。
- 有沒有更聰明的方法來查找表中時間 = 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
)
)
)
)
);