有沒有辦法提取公式中使用的列?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />大家好-
我正在嘗試在我的平台中建立一個新按鈕,該按鈕將從逐步分析中提取選定的列,然後建立每個選擇的單變量分佈。 限制在於,所選列的提取和建構分佈僅限於清單中的特定列名稱。 我希望能夠深入到該列中檢查它是否是公式,如果是公式則提取使用的任何列,然後轉身並將額外的列逐步包含到所選列的列表中。
更具體地說,我可以從公式中提取列嗎? 使用“:”部分似乎不會捕獲複雜的名稱,並且索引僅指獲取整個公式。
一個例子是在列表中包含我的“音量”列:
{:體積}
執行column("Volume")<<取得公式;返回:
:高度 * :寬度 * :長度
我想以以下列表結束:
{:高度、:寬度、:長度、:體積}
這是一個簡單的公式範例,還有其他具有簡單或複雜名稱的版本/類型...
謝謝,
安德魯·帕克
回覆:有沒有辦法提取公式中使用的列?我認為這是對上面 Craige@JMP 條目的合理解釋,Andrew。
但請注意,上面的範例表明您只需要保留清單中的不同項目(因此「W」僅出現一次)。 您可以將此邏輯放入 Craige 的函數中,或者只是操作他的函數返回的列表。
回覆:有沒有辦法提取公式中使用的列?謝謝! 這絕對是我完成我的程序所需要的。
為了檢查我對公式的理解,如果我使用公式產生器來視覺化發生的情況:

它看著主框並詢問“公式是什麼?”以及“需要多少件?”它會查看每個部分並重複問題,直到它遇到一個內部只有葉子的盒子,並傳回作為列名的葉子的字串。 一旦實現了最小的葉盒,它就開始退出並查看在通往第一個葉盒的路徑上未檢查的節點/葉...
描述不是很雄辯,但這聽起來正確嗎?
回覆:有沒有辦法提取公式中使用的列?不錯的程式碼! 非常感謝。
回覆:有沒有辦法提取公式中使用的列?Ian - 遞迴版本這裡
回覆:有沒有辦法提取公式中使用的列?執行此操作的最佳方法是將公式表達式遞歸標記為樹,然後掃描葉節點以取得列參考。 在JSL 中使用提供的表達式操作基元完全可以實現這一點(請參閱《JMP 腳本指南》中的“列表和表達式”部分,注意“Head()”、“NArg()”和“Arg( )”函數)。 但您可能需要翻出一本計算機科學書籍來編寫此方法。
或者,下面的程式碼提供了一種讓 JMP 為您完成工作的笨拙方法(使用分析器):
名稱預設到這裡( 1 ) ;
dt =新表( “取得公式中的列” ,
新增行( 20 ) ,
新專欄( “H” ,
數位,
“連續的” ,
格式( “最好的” , 12 ) ,
公式(隨機制服() )
) ,
新專欄( “W” ,
數位,
“連續的” ,
格式( “最好的” , 12 ) ,
公式(隨機制服() )
) ,
新專欄( “D” ,
數位,
“連續的” ,
格式( “最好的” , 12 ) ,
公式(隨機制服() )
) ,
新專欄( “V” ,
數位,
“連續的” ,
格式( “最好的” , 12 ) ,
公式( ( :瓦* : H * : D ) / 10 )
)
) ;
// 不可見地啟動 Profiler
p = dt <<分析器(是( : V ) ,擴張,無形的) ;
// 取得網格表
p <<輸出網格表;
// 將網格表中的列放入清單中
列=數據表(表格()) <<取得列名( “細繩” ) ;
// 清理
p <<關閉視窗;
關閉(數據表(表格()) ,不保存) ;