在R中使用Lage数据集前哨2

问题描述

我正在Rstudio中使用500多个千兆位栅格。

我的代码运行正常,但问题是R正在将所有栅格数据写入一个临时文件夹,这意味着计算时间超过4天(即使在SSD上)。有没有办法使处理更快? 我正在使用64G RAM和1.5 G SSD的计算机。

最诚挚的问候

解决方法

我不了解Sentinel 2,因此很难帮助您提高性能。基本上,您必须尝试(a)对foreachdoparallel程序包使用一些并行计算,(b)找到更好的程序包,或者(c)降低复杂度,诸如“ R不适合大型数据集”之类的错误答案。

A)解决方案之一是并行计算,如果可以对计算进行划分(例如,问题出在很多计算中,而您只写结果)。例如,使用foreachdoparallel包,观察许多时间网络要比使用“正常”串行for循环(例如foreach / {{ 1}}对于为网络的每个成员和全球网络计算基本统计信息非常有用,一旦您需要将这些计算重复到多个“子网”或多个“时间T”和“ { 1}}的结果在maxi-dataset中)。最后一个doparallel arg。对于单个500 gb网络将是无用的,因此您必须一一写入结果,而且结果将非常长(4天=数小时或并行计算,假设并行计算的速度比实际计算快6或7倍)。

B)有时,只是简单地确定一个更合适的程序包即可,例如文本挖掘计算以及.combine所提供的性能。我更喜欢使用.combine style计算文本挖掘,但是对于大型数据集,并且在迁移到R以外的其他语言之前,quanteda package最终非常强大且快速,即使在大型数据集上的文本。在此示例中,如果Quanteda太慢而无法在数据集中计算基本文本挖掘,则您必须迁移到另一种技术或停止部署“死亡计算”和/或降低问题的复杂性/解决方案/数据集的大小(例如tidyverse尚不能-很快-在500 gb 的非常大的数据集上计算GloVe模型,而您正在达到所提供方法的边界由Quanteda软件包提供,因此您必须尝试使用​​另一种语言,而不是R:在大型数据集上部署GloVe模型,像SpaCy这样的Python或Java语言库要比R更好,这与R相比不是很大。

,

我建议尝试使用terra软件包,它与raster具有几乎相同的功能,但是可以更快。