将正则表达式与R匹配

时间:2014-06-03 15:12:14

标签: r

我有一个超过300K字符的向量,我想与一个小得多的30K字符向量进行比较。

数据看起来像这样:

data1 <- data.frame(col=c("Peter i.n.", "Victor Today Morgan", "Obelix", 
                          "One More"))
data2 <- data.frame(num=c(123, 434, 545, 11, 22), 
                    col=c("Victor Today", "Obelix Mobelix is.",
                          "Peter Asterix i.n.","Also","Here"))

目前,我正在使用下面的方法,但匹配/处理它需要太长时间。

有人会这么善良并提出另一种方法或加强现有方法吗? %in%mergematch等功能不会用于此目的,因为来自names to be matcheddata1的{​​{1}}并不完美相等(这是我的解释为什么函数与表达式不匹配)。

data2

上面提取的行与data2[as.logical(sapply(as.character(data2$col), function(x) any(grepl(x, as.character(data1$col), fixed = TRUE)))),]

中的名称相匹配

1 个答案:

答案 0 :(得分:1)

试试这个:

col1 <- paste(data1$col, collapse = "\n")
data2[sapply(data2$col, grepl, col1, fixed = TRUE), ]