正常的“SelectWhere”用法如下:
dt<<SelectWhere(:ExampleColumnName > 5);
這很好用。 我遇到的困難是當我需要更靈活地選擇“:ExampleColumnName”時。
例如,如果我在擬合模型中儲存新的 Studentized Residuals 資料列,它將建立一個名為「Studentized Resid Log(CFU/mL) By Condition」的欄位。 假設我想選擇高於 3 或低於 -3 的任何值。 由於該列的名稱,我需要使用:
dt<<SelectWhere(:Name("Studentized Resid Log(CFU/mL) By Condition")<-3 | :Name("Studentized Resid Log(CFU/mL) By Condition")>3);大多數時候這都很好,但並非總是如此。 必須在:Name() 中完全寫出字串並不是很理想- 例如,如果計劃使一個函數可用於各種擬合模型,每個擬合模型將產生不同的Studentized Residual 列名稱,那麼它是不理想的為每個可能的模型編寫唯一的“SelectWhere”效率不高(特別是如果您不能總是預測使用者將選擇什麼模型)。
我想要的工作是以下一項/兩項:
//Option 1
colName = ""Studentized Resid Log(CFU/mL) By Condition";
dt<<SelectWhere(:Name(colName)<-3 | ::Name(colName)>3);
//Option 2
colRef = Column(dt, colName);
dt<<SelectWhere( colRef <-3 | colRef >3 );
當執行 SelectWhere 函數時,選項 1 會傳回「名稱參數必須是帶有引號的字串」錯誤。 似乎 :Name() 需要一個完全寫出的字串,而對字串的引用是不可接受的。
選項 2 不回傳任何錯誤,但不會選擇任何內容。 SelectWhere 似乎沒有像明確鍵入“:XXXX”引用那樣對待列引用變數。
我目前的解決方法不是很好:在Fit Model 建立新列後,將表中的最後一列重新命名為簡單且唯一的名稱(例如「StdResid」),可以直接在SelectWhere 的「正常用法」中使用(例如,“ :標準殘留”)。
我是否錯過了一些明顯的東西,可以讓我的生活更輕鬆?
另外,有什麼方法可以讓選項 1 和/或選項 2 發揮作用嗎?