2016-07-14 5 views
0

Я пытаюсь внедрить код в мой сценарий, который будет создавать новую папку на моем компьютере и сохранить участки в него, используя:Как перезаписать папку на компьютере, используя функции в R

daily <- "D:/Work/R/Daily" 
dir.create(daily) 
for (d in unique(data.air$yr_day)) { 
mypath <- file.path(daily, paste(name, d, ".png", sep = "")) 
png(filename = mypath, width = 963, height = 690) 
timePlot(subset(data.air, yr_day == d), 
     plot.type = "p", 
     y.relation = y.scale, 
     pollutant = c("co2.ppm", "o2.permeg", "apo"), 
     date.pad = TRUE, 
     pch = c(19,19,19), 
     cex = 0.2, 
     xlab = paste("Time of day in hours on", d), 
     ylab = "CO2, O2, and APO concentrations", 
     name.pol = c("CO2 (ppm)", "O2 (per meg)", "APO (per meg)"), 
     date.breaks = 24, 
     date.format = "%H:%M" 
) 
dev.off() 
} 

Однако , после первого запуска, когда я снова запустить код, функция не перезаписывает старые папки и графики в нем, а вместо этого возвращает эту ошибку:

Warning message: 
In dir.create(daily) : 'D:\Summer Work with Andrew\R\Daily' already exists 

так как изменить код так, чтобы он будут перезаписывать старые сюжеты/папку новыми при каждом повторном запуске кода?

Благодаря

+0

Вам не нужно переписывать каждый раз папку. Вы можете просто добавить вверху: 'if (! File.exists (daily)) dir.create (daily)'. Это создаст «ежедневную» папку, только если она еще не существует. Графики автоматически перезаписываются. – ytk

+0

@ytk, добавив, что ваша настройка избавилась от предупреждающего сообщения, однако это не похоже на то, что графики перезаписаны (я проверил дату создания, и это была старая дата) –

+1

Тестирование, если каталог существует, - это то, что 'dir.create 'уже делают. Чтобы не видеть предупреждение, используйте 'dir.create (path, showWarnings = FALSE)'. Если вы хотите удалить все в каталоге, вы можете 'unlink (dir)' перед вызовом 'dir.create (dir)' – Ulrik

ответ

1

мне удалось решить эту проблему, благодаря предложению от комментариев. Чтобы упростить работу для будущего использования, я создал новую функцию, которая делает работу, как сказал @Ulrik в комментарии выше:

make.dir <- function(fp) { 
if(!file.exists(fp)) { # If the folder does not exist, create a new one 
make.dir(dirname(fp)) 
dir.create(fp) 
} else { # If it existed, delete and replace with a new one 
unlink(fp, recursive = TRUE) 
dir.create(fp) 
    } 
}