R: Невозможно запустить определенную функцию после очистки временного каталога

Я получаю сообщение об ошибке:

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

имеет в виду это. Я не знаю, что я сделал не так здесь. Могу ли я вернуть эти файлы или обойти эту ошибку?


person Marie Stessens    schedule 17.05.2020    source источник


Ответы (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")
person Robert Hijmans    schedule 17.05.2020
comment
Дорогой Роберт, большое спасибо за вашу помощь. Я попробовал ваше предложение, но это не решает мою ошибку. Файл, который не может быть найден в каталоге, не является файлом, который я хочу использовать в качестве вывода, и не является промежуточным зажатым файлом, поэтому я не знаю, почему этот файл нужно вызывать. Когда я заканчиваю сеанс R и запускаю свой полный код в новом, я все равно получаю ту же ошибку. - person Marie Stessens; 19.05.2020
comment
Трудно помочь, так как я не могу воспроизвести это. Можете ли вы сделать небольшой воспроизводимый пример? Возможно, вы можете показать, где и когда именно возникает ошибка (при i = 1?); как создается агрегированный.растр? Вам нужно воссоздать их? - person Robert Hijmans; 19.05.2020
comment
Уважаемый Роберт, это оказалась какая-то внутренняя проблема с моей версией R. Поскольку я начал получать ошибку для всех функций, которые я запускал в R, я удалил и снова обновил R, и теперь он, кажется, работает. Большое спасибо за решение проблемы вместе со мной! - person Marie Stessens; 21.05.2020