我在R中成功写了一个for循环。这没关系,我很高兴它有效。但我也想了解我所做的事情,因为我将在以后的分析中使用循环。
我使用栅格数据(DEM)。我将它们作为栅格加载到环境中,然后我在循环中使用getValues函数,因为我想进行一些计算。看起来如下:
list <- dir(pattern=".tif", full.names=T)
tif.files <- list()
tif.files.values <- tif.files
for (i in 1: length(list)){
tif.files[[i]] <- raster (list[[i]])
tif.files.values[[i]] <- getValues(tif.files[[i]])
}
好的,到目前为止一切顺利。在我在循环中使用tif.files和tif.files.values之前,我不知道为什么必须指定tif.files和tif.files.values,我不知道为什么要指定它们我是如何做到的。对于第一部分,光栅操作,我有一个模式。也许有人可以解释上下文。我真的很想了解R.
答案 0 :(得分:0)
当你这样做时:
tif.files[[i]] <- raster (list[[i]])
然后tif.files[[i]]
是运行raster(list[[i]])
的结果,因此存储栅格对象。这个对象包含元数据(范围,行数,列数等)和数据,但如果tiff很大,那么它实际上并没有读取它。
tif.files.values[[i]] <- getValues(tif.files[[i]])
该行在栅格对象上调用getValues
,它会从栅格中读取值并返回一个向量。网格单元格的值现在位于tif.files.values[[i]]
。
在R提示下打印tif.files[[1]]
和tif.files.values[[1]]
进行实验。
这是R,而不是RStudio,它是你正在使用的具有所有按钮和菜单的界面。如果没有它,R语言就会非常愉快,你的问题只是一个语言问题。我已经为你编辑和标记了它。