【问题标题】:R: Cannot run certain function after cleaning temporary directoryR:清理临时目录后无法运行某些功能
【发布时间】:2020-05-17 12:43:58
【问题描述】:

我得到错误:

Error in file(fn, "rb") : cannot open the connection
In addition: Warning message:
In file(fn, "rb") :
  cannot open file 'C:\Users\***\AppData\Local\Temp\Rtmpwh6Zih\raster\r_tmp_2020-05-
13_170601_12152_33882.gri': No such file or directory

当我在 RStudio (1.2.5042) 中运行以下代码时:

raster.binair <- vector(mode = "list", length = length(aggregated.rasters)) 
for (i in 1:NROW(aggregated.rasters)) { 
+     clamped <- clamp(aggregated.rasters[[i]], upper=12, useValues=FALSE)
+     raster.binair[[i]] <- clamped
+   } 

“aggregated.rasters”是 96 个栅格的列表,当我单独运行它时,我得到了正确的列表。我最近清理了我的临时目录(由 tempdir() 访问)并删除了其中的文件。我想这部分:

cannot open file 'C:\Users\***\AppData\Local\Temp\Rtmpwh6Zih\raster\r_tmp_2020-05-
13_170601_12152_33882.gri': No such file or directory

指的是这个。我不知道我在这里做错了什么。我可以取回这些文件或解决此错误吗?

【问题讨论】:

    标签: r temporary-directory


    【解决方案1】:

    临时文件夹中的文件会在 R 会话结束时被删除。所以你永远不应该指望他们。您可以再次运行代码,但如果您想永久保留结果,则需要将它们写在别处。这里有两个选择

    写很多文件

    raster.binair <- vector(mode = "list", length = length(aggregated.rasters)) 
    for (i in 1:NROW(aggregated.rasters)) { 
        f <- paste0("raster_", i)
        clamped <- clamp(aggregated.rasters[[i]], upper=12, useValues=FALSE, filename=f)
        raster.binair[[i]] <- clamped
    } 
    

    写一个文件

    raster.binair <- vector(mode = "list", length = length(aggregated.rasters)) 
    for (i in 1:NROW(aggregated.rasters)) { 
        raster.binair[[i]]  <- clamp(aggregated.rasters[[i]], upper=12, useValues=FALSE)
    } 
    s <- stack(raster.binair)
    s <- writeRaster(s, filename="mydata.tif")
    

    【讨论】:

    • 亲爱的罗伯特,非常感谢您的帮助。我尝试了您的建议,但这并不能解决我的错误。在目录中找不到的文件不是我想要作为输出的文件,也不是中间的“clamped”文件,所以我不知道为什么需要调用这个文件。当我结束我的 R 会话并在新的会话中运行我的完整代码时,我仍然收到相同的错误。
    • 这很难帮上忙,因为我无法重现。你能做一个可重复的小例子吗?也许您可以显示错误发生的确切位置和时间(在 i = 1 时?); aggregated.raster 是如何创建的?你需要重新创建那些吗?
    • 亲爱的罗伯特,原来是我的 R 版本存在一些内部问题。由于我开始在 R 中运行的所有函数都出现错误,我再次删除并升级了 R,现在它似乎工作。非常感谢您与我一起解决问题!
    猜你喜欢
    • 2022-09-26
    • 2012-11-19
    • 1970-01-01
    • 2017-07-24
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    相关资源
    最近更新 更多