JMP > JSL > 如何将参数传递给包含我自己的脚本的加载项?您好 JMP 社区,
我是 John Sall 的 FDR 计算插件( com.sas.sall.fdrpvalue.jmpaddin)分析大型生物标志物数据。
虽然在此加载项中手动输入数据很简单,但我还没有弄清楚如何将 JSL 脚本中的参数传递到此工具中。
我知道我必须使用 Include ("[Add-in]") 命令才能在我的脚本中使用加载项,但是如何将我的脚本生成的特定列指向加载项?
谢谢您的帮助。
最好的,
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;回复: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