幫助列變量大家好,
我無法理解為什麼以下代碼失敗:
// This code doesn't work
dt = Current Data Table();
selectedCol = dt << Get Selected Columns();
If( Col Mean( selectedCol[1] ) < Col Mean( selectedCol[2] ),
begin = selectedCol[1];
end = selectedCol[2];
,
begin = selectedCol[2];
end = selectedCol[1];
);
我希望將整個列重新分配給開始/結束變量,但它不會發生。我試過這個:
// This code still doesn't work
dt = Current Data Table();
selectedCol = dt << Get Selected Columns();
If( Col Mean( As Column( selectedCol[1] ) ) < Col Mean( As Column( selectedCol[2] ) ),
begin = As Column( selectedCol[1] );
end = As Column( selectedCol[2] );
,
begin = As Column( selectedCol[2] );
end = As Column( selectedCol[1] );
);
我可以得到一些幫助,概念和實踐。 這看起來很簡單,但我顯然錯過了一些重要的東西。
約翰
Re:幫助列變量謝謝,謝謝朱利安!
這非常有用!!!!
約翰
Re:幫助列變量你好 @john_madden ,
我在這裡註意到兩件事。首先,JSL從外部評估嵌套函數,這意味著您需要一個Eval()來引用列表中的列。其次,如果我正確理解您,您希望分配的所有列值開始和結束。如果是這樣,您需要向列發送消息以返回這些值:<<獲取值。以下應該有效(假設這是你的意圖!)。
dt = Current Data Table();
selectedCol = dt << Get Selected Columns();
If( Col Mean( eval(selectedCol[1]) ) < Col Mean( eval(selectedCol[2]) ),
begin = selectedCol[1] << Get Values;
end = selectedCol[2] << Get Values;
,
begin = selectedCol[2] << Get Values;
end = selectedCol[1] << Get Values;
);
我希望這有幫助!
@julian
編輯:我可以看到有人如何看待我關於嵌套函數的觀點,並說“等,Col均值(selectedCol [1])”不是嵌套函數,那為什麼不起作用?事實上,訂閱是一個功能,它只是方便地使用括號。你可以寫:
Col Mean( Subscript(selectedCol,1) )
在這種情況下,函數的嵌套是顯而易見的。當JMP嘗試評估這段代碼時會發生什麼,首先評估Col Mean(),並且該函數需要一列來操作。它命中了Subscript()函數,不知道如何處理它。因此,通過在Eval()中包裝Subscript(),我們告訴JMP在嘗試評估Col Mean()之前首先處理下標(返回對列的引用)。
Col Mean( Eval( Subscript( selectedCol,1 ) ) )
我希望額外的解釋有所幫助!