我有一个目前大约4200行的数据框, 它来自数千 pdf 文件的数据。 数据框中的列之一列出了该数据来自的 pdf 的文档路径。 一些数据点被复制, 原因是数据框中已渗入的数据更早的迭代。 我有一个函数可以找到多个迭代时案例的最新迭代, 并且为包含每个条目最新迭代的 pdf 文件生成一个文件路径列表。 我需要过滤我的原始数据, 以便只包含这些最新的文件路径 。 目前, 我用这个函数来做 :
data<-data[grep(paste0(latest_version, collapse="|"), data$path),]
数据是我的原始数据框, 而最近的版本是正确的文件路径列表。 这工作很有效, 但速度非常慢 。 由于我需要经常更新我的数据, 我需要一种快速( 秒而不是分钟) 的方法来做到这一点。 我试图在我的 grep 函数调用中使用固定=T, 但有些原因没有返回任何结果 。 任何想法, 想要以更有效的方式处理这个问题吗?
编辑 :
可通过生成下列假数据模拟这一问题:
test_df<-data.frame(a=c(1:50000), b=c(1:50000), path = do.call(paste0, Map(stri_rand_strings, n=50000, length=c(100, 50, 7),
pattern = c( [A-Z] , [0-9] , [A-Z] ))))
test_latest_ver<-test_df$path[sample(50000, 2000)]
final_data<-test_df[grep(paste0(test_latest_ver, collapse="|"), test_df$path),]