【发布时间】:2022-01-05 09:06:32
【问题描述】:
我有以下问题。我正在使用两个 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)?
谢谢!
【问题讨论】:
-
请忘记您听说过
assign和eval函数。它们完全不足以解决此类问题,并使代码变得更加复杂而无济于事。请改用命名列表。 (这种类型的问题在这里非常常见,在这种情况下使用assign和eval是从不正确答案;这些函数的用途非常不同。)