【问题标题】:Difference between [A-Z] and LETTERS in grep [duplicate]grep中[A-Z]和字母之间的区别[重复]
【发布时间】:2018-02-05 14:55:39
【问题描述】:

我试图只保留 id 包含字母的行。而且我发现以下两种方法会产生不同的结果。

df[grep("[A-Z]",df$id),]
df[grep(LETTERS,df$id),]

似乎第二种方式会省略许多实际上有字母的行。

为什么?

【问题讨论】:

  • 因为grep 中的pattern 参数未矢量化。因此它只寻找“A”。您的第二行没有收到警告吗?
  • 这可能是问题所在。我压制了所有警告,所以我看不到它。如果我想 grep 列表中的模式,我该怎么办?喜欢 ["H',"a"]?

标签: r regex


【解决方案1】:

如果你想在向量中 grep 模式,试试这个:

to_match <- paste(LETTERS, collapse = "|")
to_match
[1] "A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z"

然后

df[grep(to_match, df$id), ]

说明: 您将匹配“to_match”中的任何字符,因为它们由“或”运算符“|”分隔。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 2014-12-05
    • 2017-04-26
    • 1970-01-01
    相关资源
    最近更新 更多