我正在努力解决这个问题,但对我的解决方案不是很满意。在较大的文件上效率不是很高。
我有两个数字列表:
a <- as.numeric(c("12345678","2235689","56980"))
b <- as.numeric(c("123","1234","223","2235689","111","222","555","888","12345","8989"))
我需要知道是否有任何来自 START 的数字与 b 中的任何数字。
所以我写了一个函数如下:
findpattern <- function(a,b){
a_s<-c()
b_s<-c()
for (a1 in a){
z<-sapply(b,function(x)(1 %in% (regexpr(x,a1))))
if (TRUE %in% unique(z)){
b1 <- b[z]
a_s<- c(a_s,a1)
b_s<- c(b_s,pplist(b1))
}
}
res <- data.frame(a_find=a_s,b_associate=b_s)
return (res)
}
所以结果应该是这样的:
> findpattern(a,b)
a_find b_associate
1 12345678 123,1234,12345
2 2235689 223,2235689
但我对我的解决方案不满意,因为当 b 文件带有超过 10k 的数字时,它需要相当长的时间才能完成......有没有更好的解决方案?
非常感谢!!!!