我有一个800k元素的字符串向量,以匹配9k的字典。我注意到,如果我对data.frame进行切片,xcopy /?
函数的执行花费的时间要少得多(超过一小时的分钟数)。为什么呢?
我能用较小的n例子复制情况。在这种情况下,差异并不显着,但仍然不清楚为什么切片更快。那么什么是最好的优化策略呢?
match
答案 0 :(得分:0)
如果目标是为inputA
中的每个项目获取inputB
的频率,那么带有索引的data.table()
的执行速度将比使用sapply()
和{{的解决方案的执行速度更快1}}。
cut()
...和输出:
library(data.table)
data <- data.table(inputA = sample(LETTERS, 80000, replace = T),
inputB = sample(LETTERS, 80000, replace = T),
count = rep(1,80000),
stringsAsFactors = F)
setkey(data,inputA)
system.time(
output <- data[inputA %in% inputB,sum(count),by=inputA]
)
head(output)