使用儲存在變數中的清單更新列列錶框未如預期工作。 這是它原本的樣子嗎?我試圖透過使用一致引用更新腳本來糾正我編寫的腳本中以前的“罪過”,即,以便該腳本引用我(想要)告訴它的一個表,即使另一個表可能是當前的(或“幹擾”)表。 我嘗試重構下面的問題。
Names Default To Here( 1 );
// this is the table i want to work with
dt = New Table( "Target table", invisible,
Add Rows( 3 ),
New Column( "Name_1",
Character( 1 ),
"Nominal",
Set Values( {"A", "B", "C"} ),
Set Display Width( 45 )
),
New Column( "Name_2",
Character( 1 ),
"Nominal",
Set Values( {"X", "Y", "Z"} ),
Set Display Width( 45 )
),
New Column( "NumericRight",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 2, 3] ),
Set Display Width( 78 )
),
New Column( "NumericAlso",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [7, 8, 9] )
)
);
dt2 = New Table( "Interfering table", invisible,
Add Rows( 3 ),
New Column( "Name_1",
Character( 1 ),
"Nominal",
Set Values( {"D", "E", "F"} ),
Set Display Width( 45 )
),
New Column( "Name_2",
Character( 1 ),
"Nominal",
Set Values( {"U", "V", "W"} ),
Set Display Width( 45 )
),
New Column( "NumericInterference",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [4, 5, 6] )
),
New Column( "MoreNumeric",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [7, 8, 9] )
)
);
// get lists
lstName_1 = Associative Array( dt:Name_1 ) << Get Keys;
lstName_2 = Associative Array( dt:Name_2 ) << Get Keys;
colList = dt << Get Column Names( "Numeric" );
// window with radio buttons & col list box
New Window( "Select values",
Show Menu( 0 ),
Show Toolbars( 0 ),
Border Box( Top( 0 ), Bottom( 20 ), Left( 20 ), Right( 10 ),
H List Box(
Panel Box( "Name_1",
Radio Box(
Eval List( lstName_1 )
)
),
Panel Box( "Name_2",
Radio Box(
Eval List( lstName_2 )
)
),
Panel Box( "Numeric Columns",
clb = Col List Box( )
),
clb << Append( colList ); // making me cry ...
)
)
);
我想看什麼:

如果我的「目標表」不是目前表,我總是會看到什麼:

讓我完全困惑的是,當我更改名稱時dt2:數值幹擾到dt2:數字右,我得到這個結果:

為什麼 dt2 不讓我的腳本完成我想要它做的工作? 為什麼 dt2 中列的名稱變更會影響列列錶框中的內容? 我嘗試了幾種移動方法列列表變數並嘗試將其包裝到評估列表() ,沒有「運氣」。
再次在社區搜索,發現了這個需要有關填充列列錶框的協助。 如果有其他解決方案,謝謝您告訴我。 或者,這就是它本來的樣子嗎?如果是的話,這是什麼意思?
自動化和腳本編寫回覆:使用儲存在變數中的清單更新列列錶框未如預期運作。 這是它原本的樣子嗎?你好,
乍一看,您只需要使用以下語法即可從表 dt 中取得數字列的清單:
clb = Col List Box(dt, all, << Set Data Type ("numeric"))
此外,目前還不清楚「clb <
最後,我認為您不能在多個表中使用 Col 列錶框(如果我錯了,請糾正我)。
最好的,
TS
回覆:使用儲存在變數中的清單更新列列錶框未如預期運作。 這是它原本的樣子嗎?似乎 col 列錶框只接受創建 col 列錶框時「目前」資料表中的列。
如果 dt2 不包含對應的列,則無法新增。
我猜
current data table(dt);
// window with radio buttons & col list box
New Window( "Select values",
你沒有選擇嗎?
如果沒有,則使用
clb = Col List Box( Data Table(dt) )
指定 col 列錶框應使用哪個資料表:

回覆:使用儲存在變數中的清單更新列列錶框未如預期運作。 這是它原本的樣子嗎?謝謝@蒂埃里_S ,我明天會嘗試這個。 但是,如果 dt2 從腳本中被註解掉,Col 列錶框將按預期更新,因此它肯定有效(另請參閱我原始帖子中的第一個螢幕截圖)。
回覆:使用儲存在變數中的清單更新列列錶框未如預期運作。 這是它原本的樣子嗎?@hogi ,謝謝,明天我也試試這個,讓你知道結果。
回覆:使用儲存在變數中的清單更新列列錶框未如預期運作。 這是它原本的樣子嗎?@蒂埃里_S ,奇怪且不幸的是,這不起作用。 在我最初發布的腳本中,我根據您的建議進行了以下更改:
// this part was revised ...
Panel Box( "Numeric Columns",
clb = Col List Box( )
),
clb << Append( colList ); // making me cry ...
// ... to look like this.
Panel Box( "Numeric Columns",
clb = Col List Box( dt, all, << Set Data Type ( "numeric" ) ) // this adds the numeric columns from dt2. Why???
)
這給出了以下結果,意味著 dt2 中的數字列被加到列列錶框中,而我想要的是 dt 中的數字列。

儘管如此,學習對我來說還是非常有用的。 謝謝你!
回覆:使用儲存在變數中的清單更新列列錶框未如預期運作。 這是它原本的樣子嗎?
@雷塞爾寫道:
@蒂埃里_S ,奇怪且不幸的是,這不起作用。</CODE></P><HR /></BLOCKQUOTE><P> </P><P>程式碼幾乎是正確的,但你必須使用</P><PRE><CODE class=" language-jsl">clb = Col List Box(Data Table(dt), all, << Set Data Type ("numeric"))
你也可以使用
clb = Col List Box(all, << Set Data Type ("numeric"), Data Table(dt))但你不應該忘記「指標」*) Data Table()。
正如我之前的文章(如下)所示,根據腳本指南,它必須是

與列名稱一樣,使用名稱或引用並不重要。
但它必須是資料表(名稱或表引用),而不僅僅是沒有指示符的參數。
這有點誤導,因為通常可以將資料表(名稱)替換為資料表引用:)
但在這裡,數據表是一個可選參數 - 因此,必須有一個指示符 *) 以便 Jmp 知道它是什麼。
*) 「指標」的正式名稱是什麼?
回覆:使用儲存在變數中的清單更新列列錶框未如預期運作。 這是它原本的樣子嗎?@hogi , 我很驚訝! 感謝您的協助。
- 當然,將所需的表設定為目前表是可行的。 不知怎的,我還是想避免這種情況。
- 但下面的程式碼也有效
Panel Box( "Numeric Columns",
clb = Col List Box(Data Table( dt ))
),
clb << Append( colList ); // this is still required, which I find interesting, since I thought the clb was already added above via Col List Box(...)
相比之下,下面的則不起作用。 相反,它添加了 dt2 中的數字列,這對我來說沒有意義。
Panel Box( "Numeric Columns",
clb = Col List Box(dt, all, << Set Data Type ( "numeric" )) // adds numeric columns from dt2 :(...
),
/*clb << Append( colList );*/ // doesn't matter whether this is commented out or not
回覆:使用儲存在變數中的清單更新列列錶框未如預期運作。 這是它原本的樣子嗎?你好@雷塞爾。
我必須承認,這也讓我有點困惑:)
他們應該用過
Col List Box(<FROM data="https://community.jmp.com/" table=""></FROM>
作為可選參數......或其他任何東西 - 但不同於資料表(“表名”)
- 有點誤導,對吧?
作為 Jmp 用戶多年後,人們很想將整個表達式替換為dt - 從而忘記「指標」。
另一方面,很高興可以使用表引用而不是表名稱作為資料表的參數:)
回覆:使用儲存在變數中的清單更新列列錶框未如預期運作。 這是它原本的樣子嗎?像您這樣的用戶的存在和幫助使包括我在內的許多人在腳本編寫和其他 JMP 相關技能方面得到提升。 這是善意,我們非常感激。
回覆:使用儲存在變數中的清單更新列列錶框未如預期運作。 這是它原本的樣子嗎?@蒂埃里_S , @hogi供參考 - https://www.pega-analytics.co.uk/blog/handling-lists-of-columns/
回覆:使用儲存在變數中的清單更新列列錶框未如預期運作。 這是它原本的樣子嗎?謝謝你的鏈接, @大衛_伯納姆博客包含一系列精美的寶石!
我剛剛閱讀了分發平台中有關列引用的部分。
有趣 - 根據腳本索引,它是:

由於沒有“ <>”圍繞著 Column() 參數,人們可能會認為柱子()是唯一的、非可選的參數
- 它是否使用柱子()函數生成列引用?
但實際上它是一樣的數據表()在前面的討論中:
柱子()是一個指標為選修的爭論:
- 它可以放在任何地方並且可以省略
- 它接受一列或 >=1 列的列表(作為引用或名稱) - 清楚地表明這不是 column() 函數
我在腳本索引中發現了另一個條目,其中 Columns() 參數前後的點表明該參數是可選的。
在這裡,它是列[複數] - 就像 GUI 中一樣。 是是另一個別名。 兩者都有助於不被功能分散注意力柱子() 。

// aliasDistribution(Column("height"));
Distribution(:height); // doesn't work<BR /><BR />Distribution(Columns("name", :sex)); // accepts >=1 arguments; column references and names<BR />Distribution(Columns({"name", :sex})); // accepts lists
<BR />Distribution(Continuous Distribution(Column( :height ))); // Distribution can be used without a Column() argument<BR />
Distribution("dummy 1st entry", Columns("height")); // Column at non-first position -> works<BR /><BR />Distribution("hello"); // not necessary to provide a meaningful (first) argument<BR /><BR />Distribution(Columns("name")); // alias<BR />Distribution(Y("name"));
回覆:使用儲存在變數中的清單更新列列錶框未如預期運作。 這是它原本的樣子嗎?腳本指南確實提供了一些術語解釋腳本編寫指南 > 編寫 JSL 腳本簡介 > JSL 術語
回覆:使用儲存在變數中的清單更新列列錶框未如預期運作。 這是它原本的樣子嗎?
所以術語是命名的論點
- 命名參數總是可選的 - 腳本索引中帶或不帶 < > 
不幸的是,沒有明確指出:
那麼命名參數的“指示器”的正式名稱是“姓名「?
回覆:使用儲存在變數中的清單更新列列錶框未如預期運作。 這是它原本的樣子嗎?官方名字? 指標?
腳本編寫指南 > JSL 建構塊 > JSL 語法規則 > JSL 名稱規則
在 JSL 中,名稱只是對項目的稱呼。 當您將數值 3 賦給表達式中的變數時一個= 3 , A是一個名字。
回覆:使用儲存在變數中的清單更新列列錶框未如預期運作。 這是它原本的樣子嗎?這就是令我困惑的地方。
我們了解到,列(“高度”)在
Distribution(Columns("height"));是一個(可選)命名參數。
那麼,什麼是列在分佈(列(“高度”)); ?
從語法的角度來看,它可能是“名稱” - 賦予命名參數。
但這會與標準定義相衝突姓名在JSL。 (比較:作為名稱(x))
我想我不是第一個問這個問題的人 - 我想命名參數的名稱有一個正式名稱。
但我沒有足夠幸運在文檔中找到它。
@馬克貝利?