嘗試通過用戶輸入獲得合適的模型。比方說,我想幫助用戶建立合適的模型,因為我知道 Y 是什麼,而且我知道我希望他們執行 gen reg。所以我給他們這個。
Names default to here(1);
dt = open("$SAMPLE_DATA\Big Class.jmp");
fit = dt << Fit Model(
Y( :height ),
Effects(),
Center Polynomials( 0 ),
Personality( "Generalized Regression" ),
Generalized Distribution( "Normal" ),
);
酷,適合 = 模型對話框。但它不是模態的,所以腳本一直在運行。此外,當他們推動跑步時,適合被刪除。
我真正想要的是讓用戶輸入他們的東西,然後一旦報告完成,我就繼續。
我正在嘗試做這樣的事情,但我沒有運氣。
while(
obj = current report()[OutlineBox(1)] << Get Scriptable Object();
!(char(obj) == "Fit Generalized[]" & try(obj[1] << Get Prediction Formula; 1, 0));
,
wait(.3);
);
我真的不想用所有的選項重建整個 UI,尤其是因為效果不是直接安裝的。
回复:嘗試通過用戶輸入獲得合適的模型。謝謝@ian_jmp和@gzmorgan0 ,我以你們所說的為基礎,基本上只做了兩次,因為我真的希望我的 doSomething 在 Gen Reg 平台中按下 Go 後做一些事情。我還對它們進行了功能化,以確保局部變量不會破壞此方法的任何內容。
如果我希望我的“My_Gen_Reg”函數返回“doSomething”的值,還有一個我無法解決的問題。 同樣,盡量不要使用全局變量或繼承變量。
*編輯*,我有一個似乎有效的權宜之計。我仍然不喜歡它的工作方式。不過,這絕對比重新創建 UI 好。
Names default to here(1);
my_Gen_Reg = Function({dt},
{fit, pf_get},
fit = dt << Fit Model(
Y( :height ),
Effects(),
Center Polynomials( 0 ),
Personality( "Generalized Regression" ),
Generalized Distribution( "Normal" ),
//Keep Dialog Open(1)
);
Report( fit )[Button Box( 9 )] << Set Function(
Function({self},
{fit_self, fit2},
fit_self = ((self << Top Parent)[OutlineBox(1)]<<GET scriptable="" object=""></GET>
回复:嘗試通過用戶輸入獲得合適的模型。@vince_faller , @ian_jmp打敗了我。 實際上,我的腳本使用了 2 個功能,即“保持對話框打開”,然後是 Ian 將腳本添加到他幾年前(2018 年 8 月 21 日左右)提供的運行按鈕的技巧。 我的 doSomething 將模型保存到數據表中。
藉此機會再次感謝 Ian 提供的有用技巧和保持對話框打開(Ian 也使用了它)。 我實際上剪切並粘貼了他的代碼並進行了修改!
Names default to here(1);
dt = open("$SAMPLE_DATA\Big Class.jmp");
fit = dt << Fit Model(
Y( :height ),
Effects(),
Center Polynomials( 0 ),
Personality( "Generalized Regression" ),
Generalized Distribution( "Normal" ),
Keep Dialog Open(1)
);
// Define a sample script
doSomething =
Expr(
Beep();
// For( i = 1, i <= N Table(), i++,
// Print( i, Data Table( i ) << getName )
// );
fit << Save to Data Table;
snames = dt << Get Table Script Names();
s = dt << get script( snames[N Items( snames )] );
Show( s );
);
// Assign the sample script to the button (JMP seems to prepend to the script that's already there?)
Report( fit )[Button Box( 9 )] << setScript( doSomething );
回复:嘗試通過用戶輸入獲得合適的模型。我以前幾次使用過這種方法:
Names default to here(1);
dt = open("$SAMPLE_DATA\Big Class.jmp");
fit = dt << Fit Model(
Y( :height ),
Effects(),
Center Polynomials( 0 ),
Personality( "Generalized Regression" ),
Generalized Distribution( "Normal" ),
);
// The 'Run' button
runButton = Report(fit)[ButtonBox(9)];
// Append to the in-built action of the button
runButton << setScript(doSomething);
// The 'Terms' shown in 'dt2' reflect the user selections made in teh launch dialog
doSomething =
Expr(
Beep();
fit2 = fit << run;
dt2 = Report(fit2)[tableBox(5)] << makeCombinedDataTable;
dt2 << setName("Parameter Estimates")
);回复:嘗試通過用戶輸入獲得合適的模型。不是真的,因為第二個窗口
回复:嘗試通過用戶輸入獲得合適的模型。這有什麼幫助嗎?它是一個模態窗口,您可以捕獲輸出顯示樹。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
nw = New Window( "example",
<<MODAL></MODAL>
回复:嘗試通過用戶輸入獲得合適的模型。我可以做這樣的事情,但我覺得有上千種方法可以打破它,我真的希望有更強大的東西。
while(
obj = current report()[OutlineBox(1)] << Get Scriptable Object();
!(char(obj) == "Fit Generalized[]");
,
wait(.3);
);
btn_go_real = report(obj)[Buttonbox(1)];
report(obj)[1] << Append(Buttonbox("MyGo",
<<SET function=""></SET>