在R中解释简单循环

时间:2017-11-10 13:48:51

标签: r loops

我在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.

1 个答案:

答案 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语言就会非常愉快,你的问题只是一个语言问题。我已经为你编辑和标记了它。