You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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()

可行解决方案

  1. 指定自定义临时目录
    避开系统临时目录的权限或自动清理问题,手动设置raster包的临时存储路径(选择你有完全读写权限的本地文件夹):

    library(raster)
    rasterOptions(tmpdir = "D:/R_raster_temp")
    # 验证设置是否生效
    rasterOptions("tmpdir")
    
  2. 更新raster包
    R 4.4.1为较新版本,可能与旧版raster包存在兼容性问题,更新至最新版:

    install.packages("raster")
    
  3. 清理系统临时目录
    Windows临时目录空间不足或冗余文件过多会引发此类问题,手动清理C:\Users\Username\AppData\Local\Temp下的旧文件后,重启R再运行代码。

  4. 循环内主动清理临时文件
    在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 12:08:20