r - R中的动态输出文件名
问题描述
我非常接近让我的代码工作,但似乎无法弄清楚如何获得动态文件名。这是我得到的:
require(ncdf)
require(raster)
require(rgdal)
## For multiple files, use a for loop
## Input directory
dir.nc <- 'inputdirectoy'
files.nc <- list.files(dir.nc, full.names = T, recursive = T)
## Output directory
dir.output <- 'outputdirectory'
## For simplicity, I use "i" as the file name, but would like to have a dynamic one
for (i in 1:length(files.nc)) {
r.nc <- raster(files.nc[i], varname = "precipitation")
writeRaster(r.nc, paste(dir.output, i, '.tiff', sep = ''), format = 'GTiff', prj = T, overwrite = T)
}
## END
我很感激任何帮助。很近!!
解决方案
您可以通过不同的方式执行此操作,但我认为首先创建所有输出文件名(并检查它们是否正确)然后在循环中使用它们通常是最简单的。
所以是这样的:
library(raster)
infiles <- list.files('inputpath', full.names=TRUE)
ff <- extension(basename(infiles), '.tif')
outpath <- 'outputpath'
outfiles <- file.path(outpath, ff)
为确保您正在写入现有文件夹,您可以先创建它。
dir.create(outpath, showWarnings=FALSE, recursive=TRUE)
然后遍历文件
for (i in 1:length(infiles)) {
r <- raster(infiles[i])
writeRaster(r, paste(outfiles[i], overwrite = TRUE)
}
你也可以使用这些方面的东西
outfiles <- gsub('in', 'out', infiles)
推荐阅读
- javascript - 如何格式化我的 SQL 输出以匹配我的 GraphQL 类型?
- .net - 是否有调整面板和视频大小以进行播放的技巧
- r - R数据表行减法
- meteor - Meteor - 试图在帮助程序中返回构建的 URL,返回空白?
- service - 无法使用 Python gtfs_realtime_pb2 模块获取服务警报 Protobuff 以包含 header_text 或 description_text
- python - Tkinter - 尽管保持全局参考,图像不会显示在按钮上
- android - 调用 wit.ai API 时 Android Volley 请求失败
- opencv - 如何将 2D 面部地标转换为 3D 世界坐标?
- python-3.x - 如何在 Python 上比较 NoneType 和 Float
- ios - 如何将集合视图和页面视图放在一个场景中