我有以下問題。我正在使用兩個 for 回圈(在 i 和 j 上運行)并使用 assign 函式創建名稱取決于 i 和 j 的串列。現在,在另一個帶有兩個回圈的 for 回圈中,我想用柵格填充我創建的串列,即 19 個柵格。但是,我沒有呼叫我的串列,因為它們依賴于 i 和 j,因此我無法填寫它們。
最后,我希望有 25 個帶有名稱 rasterList_10N_010E、rasterList_20N_010E、...的串列,每個串列都有 19 個帶有各自柵格的條目。
您可以在下面找到我的代碼。我已經洗掉了對我的問題不重要的行(我實際上也根據回圈中的 i 和 j 生成了我想要存盤在串列中的柵格)。
for(i in 1:5){
for(j in 1:5){
nam <- paste0("rasterList_", i*10, "N_0", j*10, "E")
assign(nam, list())
for (k in 1:19){
raster_test <- raster(ncol=36, nrow=18, xmn=-1000, xmx=1000, ymn=-100, ymx=900)
#here the list with the name nam should be standing
rasterList_10N_010E[[k]] <- raster_test
}
}
}
我嘗試過使用解決方案
eval(as.name(nam))[[k]] <- raster_test
和
as.name(nam)[[k]] <- raster_test
但它沒有用。我認為問題可能在于該方法不是很像 R(我最近剛剛從 Stata 更改為 R)?
謝謝!
uj5u.com熱心網友回復:
我建議不要創建 25 個單一串列,而是將您的串列放入一個串列中,如下所示:
注意:k = 2為了簡單起見,我已經設定了。
library(raster)
#> Loading required package: sp
rasterList <- list()
for (i in 1:5) {
for (j in 1:5) {
name <- paste0(i * 10, "N_0", j * 10, "E")
rasterList[[name]] <- list()
for (k in 1:2) {
raster_test <- raster(ncol = 36, nrow = 18, xmn = -1000, xmx = 1000, ymn = -100, ymx = 900)
rasterList[[name]][k] <- raster_test
}
}
}
length(rasterList)
#> [1] 25
rasterList[["10N_010E"]]
#> [[1]]
#> class : RasterLayer
#> dimensions : 18, 36, 648 (nrow, ncol, ncell)
#> resolution : 55.55556, 55.55556 (x, y)
#> extent : -1000, 1000, -100, 900 (xmin, xmax, ymin, ymax)
#> crs : NA
#>
#>
#> [[2]]
#> class : RasterLayer
#> dimensions : 18, 36, 648 (nrow, ncol, ncell)
#> resolution : 55.55556, 55.55556 (x, y)
#> extent : -1000, 1000, -100, 900 (xmin, xmax, ymin, ymax)
#> crs : NA
如果仍然需要,您可以在之后獲得 25 個串列,如下所示:
lapply(names(rasterList), function(x) assign(paste0("rasterList_", x), rasterList[[x]], envir = .GlobalEnv))
由reprex 包創建于 2022-01-05 (v2.0.1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/405003.html
標籤:
