3

我需要对包含 我写的行进行子集化<three digit number>

foo <- grepl("<^[0-9]{3}$>", log1[,2])
others <- log1[!foo,]

但我不太确定如何使用正则表达式......只是一直在使用备忘单和谷歌。我认为 < 和 > 字符把它扔掉了。

4

3 回答 3

6

你几乎拥有它。尝试

^<[0-9]{3}>$

您可能有必要阅读有关锚点(^$) 的内容。

于 2013-07-31T17:52:27.870 回答
3

^和符号分别表示字符串的$开头和结尾。你不应该在它们之前或之后匹配任何东西。

如果您想要包含该模式的行,则根本不应该使用锚点。您应该只使用它:(<[0-9]{3}>或将其缩短为<\\d{3}>

于 2013-07-31T17:52:37.947 回答
1

只是为了后代,我想我会贡献我认为是对 OP 所述问题的隐含答案。

OP 似乎想要排除第二列包含 3 位整数的数据帧的行。这可以很容易地使用“nchar”函数来计算每个数字中的字符数,如下所示:

others <- log1[nchar(log1[,2])!=3,]

我们只是创建一个数组,其中包含第 2 列的每一行中包含的字符数,如果数字不等于 3,则选择该行。

于 2013-07-31T18:13:19.453 回答