为什么R匹配功能如此之慢?

时间:2014-07-24 00:07:25

标签: r

以下内容应该找到整数1的第一个实例的位置:

array <- rep(1,10000000)
system.time(match(1,array))

返回

   user  system elapsed
  0.720   1.243   1.964

如果我使用大小为100的数组运行相同的任务,我会得到:

   user  system elapsed
      0       0       0

由于它应该做的只是查看数组中的第一个值并返回匹配,所以所花费的时间应该是查找和比较的时间,而不管数组的大小。如果我用低级语言编写它,那么无论数组大小如何,它都会花费几个时钟周期(一微秒或更短?)的顺序。为什么R需要一秒钟?它似乎正在遍历整个阵列...

有没有办法让它在找到匹配后中止,而不是继续不必要的迭代?

1 个答案:

答案 0 :(得分:9)

原因是R实际上没有进行线性搜索,但它设置了一个哈希表。如果您要搜索多个项目,这是有效的,但如果您只搜索一个数字则不是很有效。以下是该功能的分析:

enter image description here

A&#34;更好&#34;如果要在数组中搜索单个整数,则实现可以使用线性搜索。我想那会更快。