簡體   English   中英

使用 R 處理多個光柵文件時保留原始文件名

[英]Retaining original file names when processing multiple raster files using R

我有以下問題:我需要在 R package landscapemetrics中使用相同的 function 處理多個光柵文件。 基本上我的光柵文件是一個國家 map 的一部分,所有形狀和大小都相同(即象限。我想出了一個文件的代碼,但我必須對 600 多個光柵做同樣的事情。所以,手動做是非常不合理。我的代碼中的步驟如下:

# 1. I load "raster" and "landscapemetrics" packages: 
library(raster)
library(landscapemetrics)

# 2. I read in my quadrant: 
Quadrant <- raster("C:\\Users\\customer\\Documents\\ ... \\2434-44.tif")

# 3. I process the raster to get landscape metrics tibble: 
LS_metrics <- calculate_lsm(landscape = Quadrant)

# 4. Finally, I write it into a csv: 
write.csv(LS_metrics, file = "2434-44.csv")

我需要為我的 csv 文件保留與 tif 相同的文件名(例如,處理象限“2434-44.tif”的結果需要存儲在“2434-44.csv”中,可能在 wd 中的文件夾中).

我是 R 的新手。我嘗試使用list.files()然后應用 for 循環,但我的代碼不起作用。 我需要你的建議。 您忠實的,丹尼斯

您的問題實際上是關於迭代和字符(文件名)操作的; 與景觀計量學等無關。您可以在本網站和其他地方的資源上找到許多類似的問題。 基本方法可以是這樣的:

# get input filenames
inf <- list.files("/my/path", pattern="\\.tif$", full=TRUE)

# create output filenames
outf <- gsub(".tif", ".csv", basename(inf))

# perhaps put output files in particular folder
dir.create("out", FALSE, FALSE)
outf <- file.path("out", outf)

# iterate 
for (i in 1:length(inf)) {
   # read input 
   input <- raster(inf[i])

   # do something 
   output <- data.frame(id=1)

   # write output
   write.csv(output, outf[i]) 
}

如果沒有更多信息,很難提供幫助。 您使用list.files()遍歷所有文件的方法有什么問題。 一般來說,這應該有效。

此外,您很可能不想計算所有可用的景觀指標,而是在calculate_lsm() function 調用期間指定一個子選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM