【发布时间】:2019-10-21 09:00:36
【问题描述】:
我需要将 .nc 文件(大小 35 GB)转换为 .csv。它显示一条错误消息:无法分配大小为 70.7 Gb 的向量
如何解决这个错误?
我已使用与转换较大文件相同的代码成功地将 .nc 文件(大小 4 kb)转换为 .csv 文件。
我尝试在 nc.df... 命令之前使用 gc() 命令清除内存。另外,我尝试如下增加内存限制。
> memory.limit()
[1] 16306
> memory.limit(size = 120000)
[1] 120000
代码如下:
> rm(list = ls())
> library(raster)
> nc.brick <- brick(file.choose())
> nc.df <- as.data.frame(nc.brick, xy=T)
> write.csv(nc.df, file.choose())
预期的结果是使用上面的代码得到一个 .csv 文件。但是,目前,在倒数第二个命令之后(即 nc.df
> sessionInfo()
R version 3.4.0 (2017-04-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
Matrix products: default
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C
[5] LC_TIME=English_United States.
1252 attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] raster_2.5-8 sp_1.2-4 RevoUtilsMath_10.0.0
loaded via a namespace (and not attached):
[1] compiler_3.4.0 RevoUtils_10.0.4 rgdal_1.2-7 tools_3.4.0 Rcpp_0.12.10 ncdf4_1.16
[7] grid_3.4.0 lattice_0.20-35
我尝试了库 ff 但它再次给出了同样的错误。
> rm(list = ls())
> library(ff)
> nc.brick <- brick(file.choose())
> nc.df <- as.data.frame(nc.brick, xy=T)
【问题讨论】:
-
您好,您可以发布
sessionInfo()的结果吗? -
@SamuelDiebolt sessionInfo() 结果如下:R 版本 3.4.0 (2017-04-21) 平台:x86_64-w64-mingw32/x64 (64-bit) 运行条件:Windows >= 8 x64(构建 9200)矩阵产品:默认续......
-
语言环境:[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 [3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C [5] LC_TIME=English_United States.1252 附加基本包: [1] 统计图形 grDevices utils 数据集方法基于其他附加包:[1] raster_2.5-8 sp_1.2-4 RevoUtilsMath_10.0.0 通过命名空间加载(未附加):[1] compiler_3.4.0 RevoUtils_10.0.4 rgdal_1 .2-7 tools_3.4.0 Rcpp_0.12.10 ncdf4_1.16 续...
-
[7] grid_3.4.0 lattice_0.20-35
-
由于 R 在内存中运行,您是否有足够的可用 RAM 来处理 70GB 以上的数据帧?您还可以尝试使用库来处理大数据帧,例如
ff。