[英]Can I 'save' a SpatRaster in a R workspace (RData) file?
我注意到,如果我使用 terra package 從存儲在本地硬盤上的文件加載柵格,然后稍后加載工作空間,則 SpatRaster object 沒有任何與之關聯的數據。 有沒有辦法在保存和加載工作區時保留與 SpatRaster object 相關的所有信息?
這是一個示例代碼來說明這個問題:
library(terra)
f <- system.file("ex/elev.tif", package="terra")
r <- rast(f)
#This produces the following output
r
#class : SpatRaster
#dimensions : 90, 95, 1 (nrow, ncol, nlyr)
#resolution : 0.008333333, 0.008333333 (x, y)
#extent : 5.741667, 6.533333, 49.44167, 50.19167 (xmin, xmax,
ymin, #ymax)
#coord. ref. : lon/lat WGS 84 (EPSG:4326)
#source : elev.tif
#name : elevation
#min value : 141
#max value : 547
sources(r)#this works
save.image("delete_if_found.RData")
rm(list = ls())
load("delete_if_found.RData")
r
#which returns the spatraster as
#class : SpatRaster
#Error in .External(list(name = "CppMethod__invoke_notvoid", address = \<pointer: (nil)\>, :
#NULL value passed as symbol address`
I am currently importing all the relevant files again after loading the workspace, is there any other way to go about it?
您好 Aniruddha Marathe,歡迎來到 SO!
如果您查看 terra package文檔,您將看到:
[...] 它們無法從已保存的 R session 中恢復,也無法直接傳遞到計算機集群上的節點。 通常,您應該使用 writeRaster 將 SpatRaster 對象保存到磁盤(並將文件名或單元格值傳遞給集群節點)
因此,每次要通過執行terra::rast(system.file("ex/elev.tif", package="terra"))
來使用它時,您都必須加載它,而不是通過加載來load()
它load()
function。
希望這可以幫助
您可以先使用writeRaster
,然后再使用rast
,也可以使用saveRDS
和readRDS
,但不能使用save
和load
。
就我而言,這是一件好事,因為保存 session 通常不是一個好主意(我希望 R 不會促使您這樣做)。 這很糟糕,因為您不應該從不知從何而來的數據開始分析。 相反,您可以將中間數據保存到文件中,並在下一步中再次讀取它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.