JMP > JSL > 如何將參數傳遞給包含我自己的腳本的加載項?JMP 社區您好,
我是 John Sall 的 FDR 計算插件的狂熱用戶( com.sas.sall.fdrpvalue.jmpaddin)用於分析大型生物標誌物數據。
雖然在此加載項中手動輸入數據很簡單,但我還沒有弄清楚如何將參數從 JSL 腳本傳遞到此工具中。
我知道我必須使用 Include(“[Add-in]”)命令才能在我的腳本中啟用加載項,但如何將腳本生成的特定列指向加載項?
感謝您的幫助。
最好的,
TS
自動化和腳本編寫回复:JMP > JSL > 如何將參數傳遞給包含我自己的腳本的加載項?JMP 社區您好,
首先,感謝@jthi以獲得快速有效的解決方案。
為了完整起見,我使用了一個粗略的替代選項,根據 FDR JSL 腳本的核心元素創建了一個函數(見下文)。 然後我在腳本中調用了這個函數。
重要的是:該函數中使用的核心代碼是由 John Sall 創建的。
NamesDefaultToHere(1);
fdr = Function ({dtf, pvalCol},
pvalues = pvalCol<<GET values="">1,dialog("PValues must be between 0 and 1");throw());
index = rankIndex(pvalues); // removes missing values
n = nrow(index);
ordPValue = pvalues[index];
adjPValue = J(n,1,.);
for(i=1,i<=n,i++,
j = n-i+1;
ratio = n/(n-i+1);
adjPValue[j] = if (i==1,ordPValue[j],min(ratio*ordPValue[j],adjPValue[j+1]));
);
rowPValues = J(NRow(dtf),1,.);
rowPValues[index] = adjPValue;
sfx = pvalCol << get name ();
n_col_name = "FDR " || sfx;
dtf<<NEWCOLUMN></NEWCOLUMN></GET>
最好的 ,
TS
回复:JMP > JSL > 如何將參數傳遞給包含我自己的腳本的加載項?我安裝了插件這裡並查看了代碼。 我很可能會重寫它並使用函數,但是您應該能夠使用插件創建的新窗口,如下所示:
Names Default To Here(1);
//This will immediately launch New Window with reference fdrDlg
Include("$ADDIN_HOME(com.sas.sall.fdrpvalue)/falseDiscoveryPValue.jsl");
dt = Open("$SAMPLE_DATA/Big Class.jmp");
colListLabel << Set Items({"age", "sex"}); //Label Columns
colListPVal << Set Items({"height"}); //PValue Column
//ok button doesn't have direct reference, so we can look for it with XPath for example
ok_btn = (fdrDlg << XPath("//ButtonBox[@title='OK']"))[1];
//to launch we can press ok_btn
ok_btn << Click;