前面提到,R语言的第二大劣势与大型数据集的处理有关。那么,这个劣势来自哪里呢?实际上,这个劣势与R语言的核心机制有关,R语言是一个内存软件。也就是说,在R语言脚本中创建和管理的每一个对象都存储在计算机的RAM中。这意味着数据的总大小不能超过RAM的总大小(前提是其他软件没有占用RAM,但这是不切实际的)。那么,如何克服这个劣势呢?答案实际上超出了本书所要讲解的范围。尽管如此,作者在此简单地总结出3种应对策略。
● 优化代码,使用profvis等程序包对代码进行分析,并遵循R语言编程最佳实践。
● 使用外部数据存储和整理工具,如Spark、MongoDB和Hadoop。在后文中,会对此做进一步介绍。
● 使用ff、filehash、R.huge或者bigmemory等程序包来改变R语言内存处理行为,以尽量避免内存过载。
作为作者,我想要强调的是,这个劣势实际上是可以克服的。对于刚刚开始R语言学习之旅的初学者,在遇到这个劣势时不必担心。
最后补充说明:随着获取计算能力的成本越来越低,与大型数据集处理相关的问题就会显得越来越微不足道。