2018 年 6 月 27 日更新:JMPtoRAddinBuilder.jmpaddin 现在包含未加密的 JSL 源文件。
版本 2 更新
我很高兴地宣布,JMP to R Add-In Builder 现在支持将所有输出组件(表格、绘图等)输出为单个报告! 要启用此功能,请安装附加的“JMPtoRAddinBuilderWithReport”。 定义输出组件时,选中“将所有结果作为报告返回”框。
要查看更新的输出格式的示例,请滚动到下面帖子中的相应部分。 还附有启用报告输出的SVM功能。
什么是 JMP to R 插件生成器?
虽然 JMP 是一款非常强大的统计软件,但 JMP 用户可能希望通过访问一些 R 功能来扩展 JMP 超出其包含的功能。
今年夏天,鉴于需要让 JMP 用户在不离开 JMP 平台的情况下更容易访问 R 函数,我创建了此引导式配置 JMP 用户界面,允许用户定义和使用执行 R 函数的自定义 JMP 插件。 该插件允许最终用户使用 R 函数在 JMP 中分析数据,而无需编写 JSL 或 R 代码。
该程序利用 JMP 到 R 连接,还可以进行修改,为其他语言(例如 Python 和 JSL 本身)的函数创建自定义插件。
观看 JMP to R Add-In Builder 的视频演示这里或以下:
要求
- 您的计算机上必须安装 R。 安装 R 从https://www.r-project.org/
- 该加载项仅在 Windows 操作系统上运行。
- 如果适用,请在 R 中安装将在 R 代码中使用的适当包。
使用说明
- 如果您在加载项中使用列选择或列列表,请务必在运行配置 UI 之前打开数据表。
- 创建的每个函数最多只有一列列表。
- 所有列选择将被分组到一列中;为所有列选择输入同一列。
- 用于列选择的每个按钮名称必须是唯一的。
- 列选择和列列表将放置在各自列的顶部。
- 在 R 代码中,将数据表引用为“dt”。
- 如果您要将列追加到表中并让用户选择列类型,请在 R 代码中将包含用户选择的字符串引用为“colType”。
- 复选框的值返回为“0”(未选中)或“1”(选中)。
- 像平常在 R 控制台中一样粘贴 R 代码,但有以下差异。
当将变量名称作为字符串引用作为函数的参数时,请使用 R 中的 eval(parse()) 函数。 例如:
eval(parse(text=paste("x <- subset(dt, select=-", colnames(factor)[1], ")")))这将计算表达式并在函数运算中使用存储在 colnames(factor)[1] 中的字符串。
工作原理:以创建支持向量机 (SVM) 函数为例
步骤0
安装并打开 JMP to R Add-In Builder。
注意:如果您在外接程序中使用列选择或列列表,请务必在运行配置 UI 之前以及运行您创建的外接程序之前打开数据表。
Step 0: Install and Open Add-InStep 0: Install and Open Add-In第0步:安装并打开插件
步骤1
Step 1: Enter Number of Components and ColumnsStep 1: Enter Number of Components and Columns第 1 步:输入组分和列数第一个屏幕询问组件*和列的数量#在您的加载项中。
*支持的五种类型的组件是:复选框、列列表、列选择、下拉菜单和数值。 每个列选择都有自己的分配按钮,因此将每个列选择和相应的按钮视为一个组件。
#列数是指组件出现的显示列数。 例如,有二在本示例的 UI 中显示列(见下文)。
注意:“操作”列与列选择列分组,这意味着分组在一起的两个对象算作一栏。
第2步
接下来,对于每个组件,确定其类型。
注意:按照您希望组件在加载项中按列显示的顺序输入组件。 这意味着每列中的所有组件必须在您指定的下拉列表中按顺序排列,但您不必严格逐列输入值。
例如,您可以输入组件 1、第 1 列的类型;然后是组件 1,第 2 列;然后是组件 2,第 1 列;然后是组件 2、第 2 列,而不是逐列(如果您愿意)。
Step 2: Enter Component TypesStep 2: Enter Component Types第 2 步:输入组件类型
步骤3
对于每个组件,选择它应出现的列。
在此屏幕上,还定义每个组件的参数,如下所示:
- 复选框:输入组件的名称(标签)。
- 列列表:除了选择列之外,无需执行任何操作。
- 列选择:检查适用于您的选择框的所有属性。
- 下拉菜单:输入下拉菜单的标签和菜单选项。 请勿在逗号后包含空格(即将内容列为 a、b、c、d),但名称和选项本身可以包含空格。 您在列表中写入的第一个名称将作为下拉菜单的名称,其余名称将按照您键入的顺序列出作为选项。
- 数值:输入组件的名称(标签)。
Step 3: Enter Component ParametersStep 3: Enter Component Parameters步骤 3:输入组件参数
步骤4
如果您的加载项使用列选择,请按照相应列选择的每个按钮应出现的顺序输入名称。 否则,单击“下一步”。
Step 4: Enter Column Select Names, if ApplicableStep 4: Enter Column Select Names, if Applicable步骤 4:输入列选择名称(如果适用)
步骤5
此屏幕显示您创建的加载项 UI 的预览。
Step 5: Add-In User Interface PreviewStep 5: Add-In User Interface Preview第 5 步:插件用户界面预览
步骤6
在此页面上,为您的加载项命名并提供说明(将显示在加载项名称下方)。
Step 6: Name and Describe Add-InStep 6: Name and Describe Add-In第 6 步:命名并描述加载项
第7步
在此屏幕上,定义将在 R 代码中使用的输入和输出变量名称。 这些应该只是一个单词(没有空格)。
对于输出变量,请勿在逗号后包含空格(即将变量列为 a、b、c)。
Step 7: Define Input and Output VariablesStep 7: Define Input and Output Variables步骤 7:定义输入和输出变量
步骤8
在此屏幕上,输入您的函数将运行的 R 代码。 R 代码应该采用 R 语法(即可以直接在 R 控制台中运行)。
该代码应引用您在上一屏幕上声明的变量名称。
还要输入该功能的输出显示数量。 目前支持的四种输出显示类型是:
- 在现有表中追加列
- 最近的 R 图
- 开表
- 带有文本或数字的结果窗口
Step 8: Enter R Code and Number of Output DisplaysStep 8: Enter R Code and Number of Output Displays步骤 8:输入 R 代码和输出显示数量
此示例的 R 代码:
library(e1071)
library(gridExtra)
theText <- paste("x <- subset(dt, select=-", colnames(factor)[1], ")")
eval(parse(text=theText))
y <- factor
svm_model <- svm(x, y, type=svmType)
modelText <- paste("second.svm <- svm(", colnames(factor)[1], " ~ ., data = dt)")
eval(parse(text=modelText))
summary(svm_model)
summary(second.svm)
pred <- predict(svm_model, x)
pred <- as.vector(pred)
if(is.list(y)) {y <- unlist(y)}
predTable <- table(pred,y)
predTable <- as.data.frame(predTable)
eval(parse(text=paste(colnames(y_var)[1], "<- as.vector(as.matrix(y_var))")))
eval(parse(text=paste(colnames(x_var)[1], "<- as.vector(as.matrix(x_var))")))
max1 <- eval(parse(text=paste("max(", colnames(y_var)[1], ")")))
max2 <- eval(parse(text=paste("max(", colnames(x_var)[1], ")")))
gridSize <- eval(parse(text=paste("max(c(", max1, ",", max2, "))")))
eval(parse(text=paste("plot(second.svm, dt, ", colnames(y_var)[1], " ~ ", colnames(x_var)[1], ", fill=TRUE, grid=gridSize)")))
第9步
对于您选择的每个输出显示,请指定类型。
Step 9: Select Output Display TypesStep 9: Select Output Display Types步骤 9:选择输出显示类型
第10步
为您选择的每个输出显示提供参数,如下所示:
- 对于“列追加”,输入将追加到当前打开的表的列的名称、该列包含的数据类型以及之前指定的输出变量(该变量将包含将填充该列的值列表)。
- 对于表,输入之前指定的将包含该表的输出变量。
- 对于 R 图,输入要从 R 检索的图形的格式(png 或 jpg)。
- 对于窗口,输入应显示在结果窗口中的结果文本。 如果您希望显示输入/输出变量的值,请用脱字符号 (^) 括住变量名称。 还要输入您想要显示的窗口的名称。
Step 10: Provide Output Display ParametersStep 10: Provide Output Display Parameters步骤10:提供输出显示参数您现在可以在您选择的目录中找到加载项文件!

到安装加载项,双击该加载项,JMP 会询问您是否安装它。 单击“安装”。 它现在应该出现在 JMP 的插件菜单中。
到跑步在加载项中,打开您想要执行操作的数据表(如果适用),使其成为当前表。 单击您的加载项(如上所示),加载项对话框应打开。

对于这个例子,三个输出是预测列、混淆矩阵和 SVM 图。 上面显示的输入结果如下,第一个视图是版本 2 中新添加的报告输出格式:
Output view from add-in version 2Output view from add-in version 2插件版本 2 的输出视图
Output view from add-in version 1Output view from add-in version 1插件版本 1 的输出视图
编辑插件
要编辑加载项,请打开保存 .jmpaddin 文件的目录。 将扩展名更改为 .zip:
打开包含您的加载项名称的 .txt 文件:

这是你的配置文件。 如果您希望对加载项进行任何更改,例如 R 代码或变量名称,您可以直接编辑本文档中的输入,保存 .txt 文件和 .zip 文件,将扩展名更改回 .jmpaddin,并重新安装您的加载项。 如果您正确更改了值,则更改将得到反映。
请参阅随附的文档了解第二个示例(时间序列的分段聚合近似,R 代码改编自这里)和其他注释。 附件中还包括我使用此插件创建的两个示例(SVM、PAA)。
您使用此插件创建了哪些 R 插件? 您希望看到哪些改进? 请在下面的评论中告诉我!
关于上面的NRow或NCol错误,如果其他人发现这个错误,我想我找到了原因。 由插件构建器生成的 JSL 代码中第 140 行附近的错误。 我认为这条线:
createdAddin[4][configAnswers3[p]][1][configAnswers4[p]][2] << get()
应该读
createdAddin[4][configAnswers3[p]][1][ notColSelectCt + yesColumnList][2] << get()
这看起来像是一个改变生活的功能,但我对如何使用它感到困惑。 我的尝试没有成功,我也不知道为什么。 最有可能的是,我对如何将信息从 JSL 传递到 R 或返回感到困惑。你能解释一下吗
<SPAN class="token function">eval</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token function">parse</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token function">text</SPAN><SPAN class="token operator">=...</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">)</SPAN>
声明? 如果您在示例中对文本进行着色,哪些函数是 JSL,哪些函数是 R,也许会对我有所帮助?