我有一个超过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%
,merge
或match
等功能不会用于此目的,因为来自names to be matched
和data1
的{{1}}并不完美相等(这是我的解释为什么函数与表达式不匹配)。
data2
上面提取的行与data2[as.logical(sapply(as.character(data2$col), function(x)
any(grepl(x, as.character(data1$col), fixed = TRUE)))),]
答案 0 :(得分:1)
试试这个:
col1 <- paste(data1$col, collapse = "\n")
data2[sapply(data2$col, grepl, col1, fixed = TRUE), ]