为什么将一个函数应用于data.frame切片更快?

时间:2017-12-14 11:28:59

标签: r

我有一个800k元素的字符串向量,以匹配9k的字典。我注意到,如果我对data.frame进行切片,xcopy /?函数的执行花费的时间要少得多(超过一小时的分钟数)。为什么呢?

我能用较小的n例子复制情况。在这种情况下,差异并不显着,但仍然不清楚为什么切片更快。那么什么是最好的优化策略呢?

match

1 个答案:

答案 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)