来自data.table手册:
事实上,我们非常喜欢它,以至于data.table包含了一个使用R内部全局字符串缓存的字符向量计数排序算法。对于包含许多重复项的字符向量,例如键列中的分组数据,这是特别快的。这意味着,性格往往是首选的因素。因素仍然得到充分的支持,特别是有序因素(水平不按字母顺序排列)。
factor不只是整数吗?它应该比character更容易执行counting sort
发布于 2013-08-19 21:21:34
因子不只是整数,它应该比字符更容易计数排序吗?
是的,如果你已经得到了一个因素。但是创造这一因素的时间可能是很重要的,这也是setkey (和特设by)的目标。在一个随机排列的字符向量上尝试定时factor(),例如1e6长和1e4级别。然后与原随机有序字符向量上的setkey或ad by进行比较。
agstudy的注释也是正确的;也就是说,字符向量(作为指向R缓存字符串的指针)与其他因素非常相似。在32位系统中,字符向量与因子的整数向量大小相同,但该因子也有级别属性可存储(有时还包括复制)。在64位系统上,指针的大小是原来的两倍。但另一方面,R的字符串缓存可以直接从字符向量指针中查找,而该因子通过级别有额外的跳转。(level属性也是R字符串缓存指针的字符向量。)
https://stackoverflow.com/questions/18304760
复制相似问题