如何在R中使用类似perl的正则表达式来匹配向量中保存的精确字符串?

时间:2013-04-25 08:52:26

标签: r

我有一个包含许多类似ID和相关信息的数据框:

col1 = c("id_string", "1id_string", "id_string1")    
col2 = c("x", "y", "z")    
col3 = c("d", "e", "f")    
data = data.frame(col1, col2, col3)

我有一个向量(从循环输出),包含一个我希望用于匹配的字符串:

id = "id_string"

我使用grep将向量中保存的字符串与包含字符串的数据$ col1中的所有行匹配

grep(id, data$col1)

但是,我希望只从数据$ col1中提取行号,并在id中保存确切的字符串(之前/之后没有字符)。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:3)

如果必须使用grep,请尝试

data
##         col1 col2 col3
## 1  id_string    x    d
## 2 1id_string    y    e
## 3 id_string1    z    f

grep(paste0("^", id, "$"), data$col1)
## [1] 1

或者@Arun建议

data[data$col1 == id, ]