我正在尝试在R脚本中自动执行数据提取过程,该脚本从定期更新的目录中提取数据。
总体框架遵循此过程
library(sp)
library(rgdal)
library(raster)
f1.t1.cir <- stack("../raster/field1/f1_cir_t1.tif")
f1.t1.NDVI <- stack("../raster/field1/f1_ndvi_t1.tif")
f1.t1.RGB <- stack("../raster/field1/f1_ndvi_t1.tif")
f1.dat <- c(f1.t1.cir, f1.t1.NDVI, f1.t1.RGB)
for (i in f1.dat){
plotRGB(i)
}
我想直接从目录生成每个f1.t1.cir
类型对象,这样当我添加新的TIFF文件f1_cir_t2.tif
时,r脚本将创建一个对象f1.cir.t2
。
我正在尝试使用像
这样的东西a <- list.files(path= "../raster/field1", pattern = "\\.tif$")
b <- gsub("_", "\\.", a)
for (i in a) {
assign(get(b[(which(a==i))]), stack((paste("../raster/field1/", i,sep=""))))
}
此时,我会将所有tiff文件作为R工作区中的堆叠多波段栅格对象。
我收到以下错误,
Error in get(b[(which(a == i))]) : object 'f1_t1_DSM.tif' not found
我无法弄清楚这是否是一个get()问题,或其他什么。
供参考
> a
[1] "f1_t1_DSM.tif" "f1_t1_NDVI.tif"
> b
[1] "f1.t1.DSM.tif" "f1.t1.NDVI.tif"
我觉得这很有用。
有什么建议吗?
答案 0 :(得分:1)
@joran,很棒的建议......
f1.t1<-list()
for(i in list.files(path= "../raster/field1", pattern = "\\.tif$")){
f1.t1[[i]]<-stack((paste("../raster/field1/", i, sep="")))
}
工作得很好,无需更改名称。
谢谢。