Re:JSL:腳本改變行狀態不起作用JMP的列公式在後台進行評估;對於具有復雜公式和大量行的表,這允許JMP在公式評估期間保持交互。 您可以滾動表格並使用其他表格和平台。
將<< runFormulas消息發送到表使得公式在其他任何事情發生之前完成評估。 使用wait(N)不是一個很好的答案,因為無法知道等待多長時間。 我試過等待(0)但這還不夠長。 一秒鐘的等待工作,但比需要的時間長一點。 << runFormulas如果已完成評估,則不會重新運行公式,因此您可以使用它而不必擔心使JSL代碼變慢。
在您的示例中,JSL仍在運行,並且在復制公式列時沒有任何機會對列公式進行後台處理。 如果單獨運行最後一行,則在執行最後一行之前進行後台評估,因此將使用計算值更新行狀態。
通常JMP知道公式何時需要完成評估;例如,推出一個新平台。 << CopyToRowStates尚未意識到。 謝謝你指出來。
我沒有看到使用wait(0)崩潰。 如果崩潰是可重現的,請與技術支持人員一起發送腳本和崩潰報告文件。
Re:JSL:腳本改變行狀態不起作用等待(0); JMP崩潰了。運行公式,工作。
謝謝!但是,我仍然無法理解為什麼
回顧一下:
1)我創建一個隨機數
2)我根據隨機數創建行狀態列
3)我根據行狀態列分配行狀態
任何特殊的原因2)可以運行而不需要在1)之後指定'run formula',但是,為了3)工作,我必須在2)之後指定運行公式?是否存在邏輯原因,或者這是JSL腳本語言的許多未記錄的怪癖之一?
Re:JSL:腳本改變行狀態不起作用嘗試發送消息運行公式到數據表。 此消息在繼續執行下一個JSL語句之前完成所有公式評估。
dt <<運行公式;
如果這不起作用,請嘗試改為等待(0)。
JSL:更改行狀態的腳本不起作用我將這個簡單的腳本放在一起,通過創建行狀態列將數據表分為訓練,測試和驗證子集。
然後,我在末尾有一行代碼,用於復制“訓練集”行狀態列中的行狀態。
奇怪的是,如果我運行整個腳本,則不會復制行狀態。如果我先運行除最後一行之外的所有內容,然後分別運行最後一行,那麼它將起作用。
有想法該怎麼解決這個嗎?我是否缺少某些東西或是一個錯誤?
謝謝!
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();
回复:JSL:更改行狀態的腳本不起作用此線程的結果是,從JMP 12開始,在後台使用New Table()自動調用<< Run Formulas()消息。