2014-03-06 42 views
0

我想使用for循环写入许多栅格文件。在for循环中生成新的输出文件名

path <- "D:/FolderA/FolderB/FolderC/FolderD/" 
files1 <- c("FolderE1/raster.tif", 
      "FolderE2/raster.tif", 
      "FolderE3/raster.tif") 
files2 <- c("FolderF1/raster.tif", 
      "FolderF2/raster.tif", 
      "FolderF3/raster.tif") 


for (i in 1:length(files1)) { 
    raster1 <- raster(paste(path, files1[i], sep = ""), band = 1) 
    is.na(raster1[[0]]) 

    raster2 <- raster(paste(path, files2[i], sep = ""), band = 1) 
    is.na(raster2[[0]]) 

    mosaicraster <- mosaic(raster1, raster2, fun = mean) 
    NAvalue(mosaicraster) <- 0 
    outputfile <- paste(path, "mosaics/", files1[i], sep = "") 
    writeRaster(mosaikraster, outputfile , type = "GeoTIFF", datatype = "INT1U", overwrite = TRUE) 


    print(c(i, "of", length(files1))) 
} 

如何内"D:/FolderA/FolderB/FolderC/FolderD/mosaics/"包括FolderE1/, E2/... etc.加上文件名,例如为每个文件创建一个新的文件夹mosaic.tif

outputfile <- paste(path, "mosaics/", files1[i], sep = "") 

没有给出令人满意的结果。

+0

我正在使用的语言是R – loki

+0

我并不关注你想要的所有细节,但我很确定你是否想创建一个目录'dir.create()'是你的朋友。 – Seth

+0

但是如何将它包含在代码中以自动生成目录?你有好主意吗? – loki

回答

1

只是为了演示在循环中制作文件夹的一种方法:如果您的对象中的目录只是循环遍历该对象的元素。

folders1 <- c("FolderE1", 
      "FolderE2", 
      "FolderE3") 




for(i in folders1) 
{ 
    dir.create(i)    #creates a dir named after the ith element of folders1 
    setwd(i)     #goes into that directory 
    tiff('raster.tif')   #plots your picture 
    plot(rnorm(10,rnorm(10))) 
    dev.off() 
    setwd('../')    #goes out to the original folder 
} 

只是一个警告:这是有点危险,因为错误可以使一个大混乱。