回复:如何使用正則表達式選擇列上的行dt << select where(
Contains( :"Aligned_bin_on_ref(ref[+/-]strand:start-end"n, , "Insert" ) == 1
)
回复:如何使用正則表達式選擇列上的行嗨,吉姆,
我仍然在訪問或評估 'Aligned_bin_on_ref(ref[+/-]strand:start-end',As Column/*###*/() 時在第 1 行得到一個未解決的列”
我嘗試了您的解決方案,在列名後面加和不加“n”,以防萬一它不是錯字。
順便說一句,我正在使用 JMP 16.0.0
dt << select where(
Contains( :"Aligned_bin_on_ref(ref[+/-]strand:start-end", ,"Insert" ) == 1 );
回复:如何使用正則表達式選擇列上的行非常感謝吉姆。在我添加缺少的“)”括號後,它就像一個魅力。這將節省我好幾個小時。 乾杯!
回复:如何使用正則表達式選擇列上的行Contains(...) 是一個非常有趣的函數。 看起來它可能只返回 true 或 false,如果在源字符串中的任何位置找到測試字符串,則返回 true,否則返回 false。
它實際上返回測試字符串在源中的位置(第一次出現),如果沒有找到,則返回 0。 由於 0 表示假,非零表示真,如果您期望真/假結果, Contains(...) 將正常工作。
但是,正如 Jim 的示例所示,您可以使用第一次出現的位置來確定它是否在開頭。 這將比 regex(...) 更有效,regex(...) 將啟動更多的機器來完成這個簡單的測試。
包含更易於閱讀:您的原始正則表達式測試可能如下所示:
dt << select where( !Is Missing( Regex( dt:"Aligned_bin_on_ref(ref[+/-]strand:start-end)"n, "^Insert" ) ) );
因為 regex(...) 在匹配失敗時返回缺失值。
在任何一種情況下,註釋都會幫助下一個維護代碼的人,或者 /* ==1 以確保它在開頭 */ 或 /* 正則表達式如果在 ^ 開頭找不到則返回丟失 */
編輯: regex(...)=="Insert" 也可以,但是與缺失值的比較不會返回真或假,所以我避免了它。
回复:如何使用正則表達式選擇列上的行親愛的 Craige,非常感謝您的精彩 JSL 課程!
非常感謝。
阿爾弗雷多
回复:如何使用 RegEx 選擇列上的行您沒有正確複製 JSL。列名後有 2 個逗號,並且沒有尾隨“n”
dt << select where(
Contains( :"Aligned_bin_on_ref(ref[+/-]strand:start-end"n , "Insert" ) == 1
)
我剛剛意識到我的代碼有 2 個逗號,這是一個錯誤....我已經更正了我的條目
如何使用正則表達式選擇列上的行您好,我想在名稱非常複雜的列上選擇以“Insert”一詞開頭的所有行:“Aligned_bin_on_ref(ref[+/-]strand:start-end”。我可以使用其他一些列選擇任何行,但這一列的名稱在某種程度上被解釋為“代碼”。
我還嘗試使用正則表達式,因為列上的“值”可能包含多個“插入”一詞的實例,並且我只想選擇以“插入”開頭的那些實例
這是我嘗試註釋掉的一些其他代碼的基本代碼。 附上該表的樣本。
我將不勝感激任何指點,
謝謝!
阿爾弗雷多
//----------------- INITIALIZE ---------------
Names Default To Here( 1 );
dt = Current Data Table ();
dt << Clear Select;
//RefCol= "Aligned_bin_on_ref(ref[+/-]strand:start-end";
// dt << Select Where (:Name("Aligned_bin_on_ref(ref[+/-]strand:start-end"), "Insert" );
SelRows = dt << Get Rows Where (RegEx(As Column("Aligned_bin_on_ref(ref[+/-]strand:start-end") , "^Insert") == "Insert");<BR />
//InsertDepth = dt << Subset( (SelRows) );高級統計建模消費者和市場研究大規模定制質量和工藝工程視窗