將腳本添加到 jmp 報告中的 ButtonBox<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
親愛的社區
我認為我的問題很簡單,但我仍然可以使用一些幫助。 我正在使用帶有添加模擬器的分析器平台來創建具有以下幾個因素的響應的蒙特卡羅模擬:
MyProfiler =探查器(
是( :回复)
) ;
MyProfiler <<模擬器(
因素(
因素 1 <<隨機的(普通的()) ,
因素 2 <<隨機的(普通的())
) ;
我想在報告窗口的“模擬到表格”大綱框下的“製作表格”按鈕中添加一些功能。 我通過添加腳本來做到這一點。 我想要做的是命名由“製作表”按鈕產生的表,並對該表執行一系列操作:
報告( MyProfiler )[按鈕框( 2 )] <<設置腳本(
我的模擬表=當前數據表() ;
//在 MySimTable 上執行操作
) ;
問題是'當前數據表'命令被執行前按下按鈕時的任何其他操作。 這意味著當前表格不是按“製作表格”按鈕生成的表格。 所以這是我的問題:有沒有辦法在運行'之前執行'內置'按鈕功能當前數據表' 命令? 任何給我自動參考生成表的解決方案都將不勝感激。
謝謝
回复:在 jmp 報告中將腳本添加到 ButtonBox你好,
我已與 JMP 開發團隊確認,在執行內置功能之前運行腳本是有意的行為。
下面是一個簡化示例,演示如何隱藏原始按鈕、運行腳本、單擊原始(隱藏)按鈕,然後運行另一段腳本。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );dt << New Column( "heightplusweight", Formula( :height + :weight ) );
// replace the button in Simulate To Tablex = Profiler( y( :heightplusweight ) );x << Simulator( Factors( Factor1 << Random( Normal() ), Factor2 << Random( Normal() ) ));bb2 = Report( x )["Simulate to Table"][Button Box( 1 )];bb2 << Visibility( "Hidden" ); // new for JMP 12bb2 << Sib Prepend( Button Box( "NewButton", setfunction( Function( {this}, // this==replacement button New Window( "Before", < H List Box( Button Box( "OK" ), Button Box( "Cancel" ) ) ); (this << Sib) << Click; // sib==original button because of < New Window( "After", < H List Box( Button Box( "OK" ), Button Box( "Cancel" ) ) ); ) ) ));
以此為模型,您可以應用該概念來隱藏並單擊舊按鈕,然後設置新表的名稱:
bb2 << Sib Prepend( Button Box( "NewButton", setfunction( Function( {this}, // this==replacement button (this << Sib) << Click; // sib==original button because of < Data Table(1) << Set Name( "New Table Name" ); ) ) ));
我希望這有幫助。
溫迪
回复:在 jmp 報告中將腳本添加到 ButtonBox嗨伊恩
感謝您的回复。 我已將此討論發送給支持團隊,只是想看看他們可能會說什麼。
回复:在 jmp 報告中將腳本添加到 ButtonBox嗨傑瑞
我對解決方法有類似的想法。 感謝您向我展示如何實施此解決方案。 它完美地工作
回复:在 jmp 報告中將腳本添加到 ButtonBox我同意伊恩。 但是,作為一種解決方法,直到您獲得更好的選擇,您可能會考慮添加一個劫持 Make Table 功能的新按鈕:
報告( MyProfiler )[ “模擬表” ] <<前置(
新按鈕=按鈕盒( “做表加” ,
報告( MyProfiler )[按鈕框( 3 )] <<點擊() ;
我的模擬表=當前數據表() ;
)
) ;
請注意,插入新按鈕會將對原始製作表按鈕的引用從 2 更改為 3。
回复:在 jmp 報告中將腳本添加到 ButtonBox我認為下面的腳本只是確認了您發現的行為。 在這種情況下,它看起來像“setScript”添加到預定義的腳本(這似乎是合理的),但它似乎是前置而不是附加:
名稱DefaultToHere ( 1 ) ;
// 測試表
dt =新表( “模擬” ,
添加行( 5 ) ,
新列( “X” ,
數字,
“連續的” ,
格式( “最好的” , 12 ) ,
設定值( [ 1 , 2 , 3 , 4 , 5 ] )
) ,
新列( “是” ,
數字,
“連續的” ,
格式( “最好的” , 12 ) ,
公式( : X +隨機法線( 0 , 0.1 ) )
)
) ;
// 擬合模型
調頻= dt <<擬合模型(
是( :是的) ,
效果( : X ) ,
性格( “標準最小二乘” ) ,
強調( “效果槓桿” ) ,
跑(
探查器(
1 ,
置信區間( 1 ) ,
期限價值( X ( 3 ,鎖( 0 ) ,節目( 1 ) ) ) ,
模擬器(
1 ,
因素( X <<隨機的(普通的( 3 , 0.8 ) ) ) ,
回應(是的<<無噪音)
)
) ,
:是的<< {不適合( 0 ) ,按預測繪製實際( 1 ) ,按預測繪製殘差( 1 ) ,情節效應槓桿( 1 )}
)
) ;
// 定義一個示例腳本
做一點事=
表達式(
嘟() ;
為了(一世= 1 ,一世<=表格() ,一世++,打印(一世,數據表(一世) <<獲取名稱)) ;
) ;
// 將示例腳本分配給按鈕(JMP 似乎預先添加到已經存在的腳本中?)
報告(調頻)[按鈕框( 5 )] <<設置腳本(做一點事) ;
也許將此線程發送到support@jmp.com得到一個明確的答案?