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,也許會對我有所幫助?