【问题标题】:Creating a loop in R to name (save) files based on the name of the variable they're stored in在 R 中创建一个循环以根据存储在其中的变量的名称来命名(保存)文件
【发布时间】:2021-09-15 09:42:19
【问题描述】:

这可能是一个基本问题,但我仍然需要一些帮助来弄清楚我应该做什么。 我的代码非常简单,有一堆计算可以获取存储在变量中的光栅文件:NDWI、NDWI、VSI 等。每个计算都基于一个卫星图像,其中的名称带有日期。我会找到一种方法来提取日期并将其存储在变量中。

本质上,我想要的是我的代码的一部分,它遍历所有创建的文件,以将它们保存为我笔记本电脑特定路径中的栅格,采用这种格式(“变量名”_“日期”.tif。 )

我现在拥有的:

Dossier <- "C:/Users/Perrin/Desktop/INRA/Raster/sentinel/L1C_T31UDR_A019210_20190225T105315/S2A_MSIL1C_20190225T105021_N0207_R051_T31UDR_20190225T125616.SAFE/GRANULE/L1C_T31UDR_A019210_20190225T105315/IMG_DATA"
library(raster)
list.files(Dossier)

Bande1 <- raster(list.files(pattern = "\\B01.jp2$"))
Bande2 <- raster(list.files(pattern = "\\B02.jp2$"))
Bande3 <- raster(list.files(pattern = "\\B03.jp2$"))
Bande4 <- raster(list.files(pattern = "\\B04.jp2$"))


NDVI <- (Bande8-Bande4)/(Bande8+Bande4)
NDWI <- (Bande8A-Bande11)/(Bande8A-Bande11)
NDDI <- (NDVI-NDWII)/(NDVI+NDWII)

writeRaster(NDWI, "C:/Users/Perrin/Desktop/INRA/résultats R/NDWI.tif", overwrite = T)
writeRaster(NDVI, "C:/Users/Perrin/Desktop/INRA/résultats R/NDVI", overwrite = T)
writeRaster(NDDI, "C:/Users/Perrin/Desktop/INRA/résultats R/NDDI.tif", overwrite = T)

任何帮助将不胜感激。

【问题讨论】:

  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: r gis raster


【解决方案1】:

用你的对象创建一个列表,然后使用Map 循环它:

rasterList <- list(NDVI = NDVI, NDWI = NDWI, NDDI = NDDI)
filenames<-sprintf("C:/Users/Perrin/Desktop/INRA/résultats R/%s_%s.tif", 
                    names(rasterList), format(Sys.Date(), "%Y%m%d"))
Map(writeRaster, rasterList, filenames, MoreArgs = list(overwrite = TRUE))

【讨论】:

  • "variable name"_"date".tif 部分呢?
  • @patL 我认为现在它涵盖了变量名称和日期。
  • @PerrinRemonté,如果您发现它有用,您可以投票和/或接受答案。
  • 嗨,很抱歉,我认为我昨天写的感谢您的评论没有成功。你的回答对我有用!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多