R 从目录中的文件自动创建对象

R 从目录中的文件自动创建对象,r,automation,r-raster,R,Automation,R Raster,我试图在一个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_n

我试图在一个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)
}
此时,我将在R工作空间中将所有tiff文件作为堆叠的多波段光栅对象

我得到以下错误

get(b[(其中(a==i))]中的
错误:未找到对象“f1_t1_DSM.tif”

我不知道这是get()问题还是其他问题

供参考

> a
[1] "f1_t1_DSM.tif"  "f1_t1_NDVI.tif"

> b
[1] "f1.t1.DSM.tif"  "f1.t1.NDVI.tif"
我想,这么多都在起作用


有什么建议吗

@joran,很好的建议

f1.t1<-list()

for(i in list.files(path= "../raster/field1", pattern = "\\.tif$")){
  f1.t1[[i]]<-stack((paste("../raster/field1/", i, sep="")))
}

f1.t1忘记
assign
get
;创建单个列表对象,并将cir、NDVI和RGB对象放在该列表中。可以对列表进行命名,以便以编程方式引用每个列表。比随意把它们扔到你的工作区要好得多。@joran,这听起来是个很好的方法。。。你能举个例子吗?如何根据文件夹的内容创建对象列表-THX整个代码可以写成两行,简单得多:
files=list.files(“../raster/field1”,pattern=“\\.tif$”);f1.t1=lappy(粘贴0(“../raster/field1/”,文件),堆栈)
f1.t1<-list()

for(i in list.files(path= "../raster/field1", pattern = "\\.tif$")){
  f1.t1[[i]]<-stack((paste("../raster/field1/", i, sep="")))
}