再:JSL:行の状態を変更するスクリプトが機能していないJMPの列式はバックグラウンドで評価されます。複雑な式と多数の行を持つテーブルでは、これによりJMPは式の評価中に対話的なままになります。 テーブルをスクロールして、他のテーブルやプラットフォームで作業することができます。
<< runFormulasメッセージをテーブルに送信すると、他のことが起こる前に式の評価が終了します。 wait(N)を使用しても、待つ時間を知る方法がないため、良い答えではありません。 私はwait(0)を試みましたが、それは十分な長さではありませんでした。 1秒の待ち時間が働きましたが、必要以上にかなり長くなりました。 << runFormulasは式の評価が終了している場合は式を再実行しません。そのため、JSLコードを遅くすることを気にせずに使用できます。
この例では、JSLはまだ実行中であり、数式列がコピーされた時点では列数式のバックグラウンド処理の機会はありません。 最後の行を個別に実行すると、最後の行が実行される前にバックグラウンド評価が行われるため、計算された値で行の状態が更新されます。
式が評価を終了する必要があるときにJMPはよく知っています。たとえば、新しいプラットフォームを立ち上げることです。 << CopyToRowStatesはまだ知りません。 それを指摘してくれてありがとう。
wait(0)を使ってもクラッシュしませんでした。 クラッシュが再現可能な場合は、テクニカルサポートに連絡してスクリプトとクラッシュレポートファイルを送付してください。
再:JSL:行の状態を変更するスクリプトが機能していないwait(0)付き。JMPがクラッシュしました。実行式、作品。
ありがとうございます。しかし、私はまだ頭を動かすことができない理由
要点をまとめると:
1)乱数を作ります
2)乱数に基づいて行状態列を作成します
3)行状態列に基づいて行状態を割り当てます
2)1)の後に 'run formula'を指定しなくても実行できる特別な理由はありますが、3)が機能するためには2)の後にrun formulaを指定しなければなりません。論理的な理由はありますか、またはこれはJSLスクリプト言語に関する多くの文書化されていない癖の1つですか?
再:JSL:行の状態を変更するスクリプトが機能していない送信してみてくださいメッセージ式を実行データテーブルへ。 このメッセージは、次のJSLステートメントに進む前にすべての式評価を完了します。
dt <<式を実行します。
それでもうまくいかない場合は、代わりにwait(0)を入れてみてください。
JSL:行の状態を変更するスクリプトが機能しない行状態列を作成して、データテーブルをトレーニング、テスト、および検証のサブセットに分割するこの単純なスクリプトをまとめました。
最後に、「トレーニングセット」行状態列から行状態をコピーするためのコードを1行追加しました。
奇妙なことに、スクリプト全体を実行すると、行の状態がコピーされません。最後の行を除いてすべてを最初に実行し、最後の行を個別に実行すると、動作します。
これを修正する方法に関するアイデアはありますか?何か不足していますか、それともバグですか?
ありがとう!
New Column( "Random", Numeric, Formula( Random Uniform() ) );
New Column( "Data Set Indicator",
Character,
Formula( If( :Random <= 0.6, "Training", 0.6 < :Random <= 0.8, "Validation", "Test" ) )
);
New Column( "Training set",
Row State,
set formula(
Combine States(
Excluded State( :"Data Set Indicator" != "Training" ),
Hidden State( :"Data Set Indicator" != "Training" )
)
)
);
New Column( "Validation set",
Row State,
set formula(
Combine States(
Excluded State( :"Data Set Indicator" != "Validation" ),
Hidden State( :"Data Set Indicator" != "Validation" )
)
)
);
New Column( "Test set",
Row State,
set formula(
Combine States(
Excluded State( :"Data Set Indicator" != "Test" ),
Hidden State( :"Data Set Indicator" != "Test" )
)
)
);
Column( "Training set" ) << Copy to row states();
Re:JSL:行の状態を変更するスクリプトが機能しないこのスレッドの結果として、JMP 12以降、<< Run Formulas()メッセージはNew Table()の背後で自動的に呼び出されます。