Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将大型光栅堆栈强制转换为数据帧的高效内存方法?_R_Time Series_Raster - Fatal编程技术网

R 将大型光栅堆栈强制转换为数据帧的高效内存方法?

R 将大型光栅堆栈强制转换为数据帧的高效内存方法?,r,time-series,raster,R,Time Series,Raster,我有一个尺寸为51010685446819358(nrow,ncol,ncell,nlayers)的大型光栅堆栈。目标是将其强制为数据帧,同时保留所有NAs。因此,RasterTopints在这里不适用。我尝试了以下操作,但出现错误: rasterOptions(format="CDF",overwrite=TRUE,maxmemory = 1e+09, chunksize=1e+08,progress="text",tmpdir="/data/xxxx") rasterTmpFile("cle

我有一个尺寸为51010685446819358(nrow,ncol,ncell,nlayers)的大型光栅堆栈。目标是将其强制为数据帧,同时保留所有
NAs
。因此,
RasterTopints
在这里不适用。我尝试了以下操作,但出现错误:

rasterOptions(format="CDF",overwrite=TRUE,maxmemory = 1e+09, chunksize=1e+08,progress="text",tmpdir="/data/xxxx")
rasterTmpFile("clean_this_after_")

#dat is a rasterstack from 1961-2013 at daaily time step

dat_df=extract(dat,1:ncell(dat))
我得到一个错误:

Error: cannot allocate vector of size 39.3 Gb
我的代码是否有问题,或者是否有更好的方法来完成相同的任务


谢谢。

这可能会有帮助,这是的,不仅仅是那个,而且你们会在很长的计算时间内看到宇宙的热死亡<当涉及到这些大数据操作时,代码>光栅的速度可能非常慢。但我想用另一个问题来回答你的问题;您确定要使用数据帧吗?即使是这样大小的数据帧也会非常棒。为什么不列个矩阵呢?@SeldomSeenSlim我明白你的意思。问题是我有一些计算要做,但我不知道如何在光栅对象上执行它们。数据帧很容易处理。例如,我想将package
spei
中的
spi
函数应用于
rasterstack
的每个网格点的时间序列。这很难执行,但很容易应用于数据帧。因此,spi()函数似乎可以处理
vector()
matrix()
、或
data.frame()
。这里面可能还有生命,长官。。。所以
extract()
在获取值时非常慢。你知道这个函数的内部结构吗?它是只获取堆栈中像素的矢量,还是也查看给定像素周围的邻域?@SeldomSeenSlim
spi
只对每个像素的时间序列进行处理。就像数据帧的每一列一样。因此,数据帧中的每一列都是独立处理的。