[英]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.