我有几个文件夹,每个文件夹包含几个Landsat 8乐队。我想迭代每个文件夹并选择相同的4个特定乐队。每个文件夹中的带以相同的顺序排列,由此可以基于它们的列表值进行查询。
这是我的代码,但它不起作用。
library(raster)
library(rgdal)
setwd("Z:/TasseledCap")
folders <- list.dirs()
for(f in 1:length(folders)){
rasterlist<-list.files(folders[f], full.names=FALSE)
rasterlist
B <- raster(rasterlist[4])
}
“.local(.Object,...)中的错误:
`Z:\ TasseledCap \ LC80330302015211LGN00_B1.TIF'中不存在 文件系统,并且不被识别为受支持的数据集名称。.rasterObjectFromFile中的错误(x,band = band,objecttype = “RasterLayer”,:无法从中创建RasterLayer对象 文件。 (文件不存在)
答案 0 :(得分:1)
将full.names
参数设置为TRUE
可以解决您的问题。请注意,您的代码将在每次迭代中覆盖B变量。
setwd("Z:/TasseledCap")
folders=list.dirs()
for(f in 1:length(folders)){
rasterlist < -list.files(folders[f], full.names=TRUE)
B <- raster(rasterlist[4])
}
P.S。:使用setwd()
更改工作目录并不总是最好的主意。我会尽量避免这个命令:
root <- "Z:/TasseledCap"
folders <- list.dirs(root, recursive=F)
for(f in 1:length(folders)){
rasterlist <- list.files(folders[f], full.names=TRUE)
B <- raster(rasterlist[4])
}