r - 使用 R 处理多个光栅文件时保留原始文件名
问题描述
我有以下问题:我需要使用 R package 中的相同函数处理多个光栅文件landscapemetrics
。基本上我的栅格文件是国家地图的一部分,形状和大小都相同(即象限。我想出了一个文件的代码,但我必须对 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])
}
推荐阅读
- tsql - 将多列反透视成行
- python - 对应括号/括号类型的正则表达式
- python - Python: how to edit element of XML file?
- azure-blob-storage - Azure blob 存储对我的几乎所有 PUT 请求都给出“请求已中止”
- sql - 如何在 sql 脚本中动态创建和更改?
- java - 如何将此弹簧集成配置从 XML 转换为 Java?
- python - 如何使用 lxml 和 python 漂亮地打印 xml 文件的子树?
- javascript - 单击链接时如何关闭导航栏?
- c++ - C 和 C++ 标头:在另一个结构内定义全局结构
- postgresql - 相当于 postgresql 中的 oracle 配置文件