回复:如何使用正则表达式选择列上的行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) );高级统计建模消费者和市场研究大规模定制质量和工艺工程视窗