Имя файла динамического вывода в R - PullRequest
0 голосов
/ 12 сентября 2018

Я так близок к тому, чтобы заставить мой код работать, но не могу понять, как получить динамическое имя файла.Вот что получила Ивве:

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

Я ценю любую помощь.Так близко !!

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Вот код, который наконец заработал:

# Imports
library(raster)

#Set source file
infiles <- list.files('infilepath', full.names=TRUE)

#create dynamic file names and choose outfiles to view list
ff <- extension(basename(infiles), '.tif')
outpath <- 'outfilepath'    
outfiles <- file.path(outpath, ff)

#run da loop
for (i in 1:length(infiles)) {
  r  <- raster(infiles[i])
  writeRaster(r, paste(outfiles[i]), format ='GTiff', overwrite = T)
}

## END
0 голосов
/ 12 сентября 2018

Вы можете сделать это по-разному, но я думаю, что, как правило, проще всего сначала создать все выходные имена файлов (и проверить, верны ли они), а затем использовать их в цикле.

Так что-то вроде этого:

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) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...