【发布时间】:2020-05-10 06:38:59
【问题描述】:
我正在尝试使用引用列表的循环加载 144 个栅格 (.tif),但遇到了错误。请注意,我的目录中只有这 144 个 .tif 文件,并且每个文件名的某些部分都是唯一的。我不确定如何最好地为此创建一个最小可重现的示例,所以我缩写了目录和文件名。
首先我加载了“光栅”包并设置了我的工作目录, 然后我还设置了一个变量“路径”等于我的工作目录。 接下来,我创建了目录中的文件列表
setwd("T:/sample/geotiffs")
path<-"T:/sample/geotiffs"
rastlist <- list.files(path=path, pattern='tif$', full.names=TRUE)
我尝试使用上一篇文章中的语法编写代码:File not found in R raster loop
for (jj in 1:length(mget(rastlist))) {
x[jj] <- raster(paste0(rastlist[jj]))
}
但是,我收到以下关于缺少第一个文件的错误: “错误:‘T:/sample/geotiffs/geotiff1.tif’的值未找到”
我也试过这样编码,不用mget()和paste0(),
x<-vector(mode="logical",length=144)
for(i in 1:length(rastlist)) {
x[i]<-raster(rastlist[i])
}
但是,我收到 50 多个警告“1:在 x[i]
有什么想法吗?运行此代码后,我的向量 x 似乎是一个包含 144 个随机整数的向量,我不知道为什么 - 也许我需要一种更好的方法来启动一个长度等于我的 rastlist 的空白向量“x”?
【问题讨论】:
-
foo <- lapply(rastlist, raster)怎么样? -
我认为该错误可能是由于您无法将栅格对象保存在矢量中(我认为这与栅格是 S4 对象这一事实有关);但是,您可以在列表中执行此操作。 @Lyngbakr 代码应该可以工作