2016-07-14 3 views
0

Je suis en train de mettre en œuvre un code dans mon script qui va créer un nouveau dossier sur mon ordinateur et enregistrer des parcelles en elle, en utilisant:Comment écraser un dossier sur l'ordinateur à l'aide des fonctions en 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() 
} 

Cependant , après la première manche, chaque fois que je lance à nouveau le code, la fonction ne remplace pas les anciens dossiers et les parcelles, et retourne à la place cette erreur:

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

alors, comment puis-je modifier le code afin qu'il écrase les anciens graphiques/dossiers avec de nouveaux chaque fois que je réexécute le code?

Merci

+0

Vous n'avez pas besoin de remplacer le chaque dossier. Vous pouvez simplement ajouter en haut: 'if (! File.exists (daily)) dir.create (daily)'. Cela créera le dossier 'daily' seulement s'il n'existe pas déjà. Les parcelles sont automatiquement écrasées. – ytk

+0

@ytk ajoutant votre ajustement s'est débarrassé du message d'avertissement, cependant, il n'a pas semblé que les tracés sont remplacés (j'ai vérifié la date créée et c'était l'ancienne date) –

+1

Tester si le répertoire existe est ce que 'dir.create 'fais déjà. Pour ne pas voir l'avertissement, utilisez 'dir.create (chemin, showWarnings = FALSE)'. Si vous voulez supprimer tout dans le répertoire, vous pouvez 'unlink (dir)' avant d'appeler 'dir.create (dir)' – Ulrik

Répondre

1

J'ai réussi à résoudre ce problème, grâce à la suggestion des commentaires. Pour simplifier le travail pour un usage futur, j'ai créé une nouvelle fonction qui fait le travail comme @Ulrik dit dans le commentaire ci-dessus:

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) 
    } 
}