R语言提取生物气候变量时临时文件无法打开的问题求助
问题:R中raster包缓冲提取生物气候变量时临时文件报错
- 系统:Windows 11 22H2 64位
- R版本:4.4.1
运行的缓冲处理代码
# test buffersizes results <- lapply(buffersizes, function(buffer_distance) { buffers <- buffer(occ.thinned.sp, width = buffer_distance) bioclim_values <- extract(envs_all.crop, buffers, fun = mean, na.rm = TRUE) return(list(buffer_size = buffer_distance, values = bioclim_values)) }) print(results)
报错内容
Error in file(fn, "rb") : cannot open the connection In addition: Warning message: In file(fn, "rb") : cannot open file 'C:\Users\Username\AppData\Local\Temp\RtmpErQYOu\raster\r_tmp_2024-08-06_163252.605407_8724_05039.gri': No such file or directory
已尝试的无效操作
- 自动/手动创建报错中指定的临时文件路径
- 重建临时目录,执行代码如下:
# check if temp folder is working temp.dir <- ifelse(!dir.exists(tempdir()), dir.create(tempdir(), recursive = TRUE), FALSE) tempdir()
可行解决方案
指定自定义临时目录
避开系统临时目录的权限或自动清理问题,手动设置raster包的临时存储路径(选择你有完全读写权限的本地文件夹):library(raster) rasterOptions(tmpdir = "D:/R_raster_temp") # 验证设置是否生效 rasterOptions("tmpdir")更新raster包
R 4.4.1为较新版本,可能与旧版raster包存在兼容性问题,更新至最新版:install.packages("raster")清理系统临时目录
Windows临时目录空间不足或冗余文件过多会引发此类问题,手动清理C:\Users\Username\AppData\Local\Temp下的旧文件后,重启R再运行代码。循环内主动清理临时文件
在lapply循环中显式清理临时文件,避免文件累积导致的异常:results <- lapply(buffersizes, function(buffer_distance) { buffers <- buffer(occ.thinned.sp, width = buffer_distance) bioclim_values <- extract(envs_all.crop, buffers, fun = mean, na.rm = TRUE) # 立即清理当前循环产生的临时文件 removeTmpFiles(h=0) return(list(buffer_size = buffer_distance, values = bioclim_values)) })
内容的提问来源于stack exchange,提问作者Karsten
相关产品推荐
相关产品推荐

