使用 For 循環獲取列腳本我有一個數據表,其中包含一堆基於我費力手動輸入的公式的新列。 我想創建一個 JSL 腳本,它允許我在另一個表中重新創建所有這些列。
以下腳本將返回我想要的單列內容:
dt=current data table();
column(dt,1) << Get script;
我想使用 FOR 循環來自動化它,但無法讓它工作。 任何有關如何解決此問題的建議將不勝感激!
這是我嘗試過的:
dt=current data table();
j= N cols(dt);
For( i = 1, i <=j , i++,
Column(dt,i) << Get Script;
);
自動化和腳本編寫回复:使用 For 循環獲取列腳本你好@cjohnson6 ,
這複製所選列加載項的腳本將執行此操作 - 選擇公式列,運行加載項,所有選定列的組合腳本將被複製到剪貼板,以便您可以將其粘貼到 JSL 工作流程中。
@朱利安
回复:使用 For 循環獲取列腳本作為參考,加載項腳本的業務部分如下:
//collist is a list of the formula columns to be copied
For( i = 1, i <= N Items( collist ), i++,
//create a new column in the copy to data table
//substitute replaces the form in the New Column() expression with the formula from
//the source column
Eval(
Substitute(
Expr(
dt2 <<
New Column(
Column(
chosen,
Char( collist[i] )
) << get name,
formula( form )
)
),
Expr( form ),
Column( chosen, Char( collist[i] ) )
<< get formula
)
)
);
回复:使用 For 循環獲取列腳本我剛剛上傳了一個複製公式加載項到文件交換。
它將為您提供一種從加載項菜單中執行此操作的交互式方式。

無需編寫自己的腳本。
回复:使用 For 循環獲取列腳本您可以一次獲取整個數據表的腳本
dt = Current Data Table();
myScript = dt << get script;
它的缺點是它將帶來腳本中嵌入的所有數據。所以最簡單的事情就是先刪除數據,然後檢索腳本
dt = Current Data Table();
dt << select all rows << delete rows;
myScript = dt << get script;
然後編輯檢索到的腳本就變得很簡單了。
關於您的腳本,我假設您想要做的是在日誌中顯示 << get 腳本的結果,以便您可以從那裡剪切和粘貼。運行腳本時,JMP 通常會顯示最後一條語句的最後結果。因此,當您僅運行一列 <
dt = Current Data Table();
j = N Cols( dt );
For( i = 1, i <= j, i++,
Show( Column( dt, i ) << Get Script )
);
或者,如果您希望將值保留到可以以編程方式使用的結構中,則可以將結果放入列表中
dt = Current Data Table();
myList = {};
j = N Cols( dt );
For( i = 1, i <= j, i++,
myList[i] = Column( dt, i ) << Get Script
);