【问题标题】:difficulties with finding the names that have dot in them with grep使用 grep 查找包含点的名称时遇到困难
【发布时间】:2016-02-03 04:48:39
【问题描述】:

我很难用 grep 找到其中包含点的名称。它找不到它们。我对非点名没有任何问题。 我的意思是诸如“J.D. Drew”之类的名称,我尝试了以下代码:

grepl("J.D. Drew" ,data_player$name)

提前致谢

【问题讨论】:

  • 当您查找精确字符串时,您可以在grepl() 中使用fixed = TRUE。它也更快。

标签: r grepl


【解决方案1】:

你需要避开那些点。因为grepl没有fixed=TRUE 参数)应该接受正则表达式作为第一个参数。正则表达式中的点匹配任何字符。为了匹配文字点,您需要在正则表达式部分对它们进行转义。或者您可以使用 char 类将它们视为文字类,例如 [.]

grepl("J\\.D\\. Drew" ,data_player$name)

【讨论】:

  • 感谢您的回答,实际上我的 grep 处于一个循环中,每次都会获取一个字符串。我希望它是自动的,因为我不知道我的 1000 个名字中有多少个带点的名字
【解决方案2】:

我认为您正在寻找类似的东西来查找变量中带有点的任何名称(字符串)?

# example data frame
data_player <- data.frame(name=c("Judith","J.D.Drew","S.Harris","Simon"),stringsAsFactors = F)

# version 1 with your mentioned loop
for(i in 1:nrow(data_player)){
  if(grepl("(\\.)+",data_player$name[i])) print(data_player$name[i])
}

# version 2 without a loop
data_player$name[which(grepl("(\\.)+",data_player$name))]

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 2011-07-25
    • 1970-01-01
    • 2019-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多