Zum Zweck arbeiten, ich habe eine neue Funktion aus, die automatisch überprüft, ob ein Ordner (mit seinem Namen durch den Dateipfad angegeben) vorhanden ist oder nicht:Dir.create Funktion in R löscht Dateien in übergeordneten Ordner auf dem Computer
make.dir <- function(fp) {
# If not existing, create a new one
if(!file.exists(fp)) {
make.dir(dirname(fp))
dir.create(fp, recursive = FALSE, showWarnings = FALSE)
} else {
# If existed, delete and replace with a new one
unlink(fp, recursive = FALSE)
dir.create(fp)
}
}
ein Beispiel wäre:
make.dir("D:/Work/R/Sample")
dies einen Ordner namens „Sample“ im elterlichen Ordner „R“ erstellen soll, wenn der Ordner nicht existiert, und den Ordner durch einen neuen ersetzen, wenn vorhanden.
Ich habe dies jedoch nur mit dem letzteren Fall versucht, d. H. Ersetzen von vorhandenen Ordnern. Gestern habe ich diesen Code verwendet, um einen Ordner zu erstellen, der nicht im "Sample" -Ordner vorhanden war (zB "Plots"). Anstatt einen Ordner mit dem Namen "Plots" zu erstellen, wurde festgestellt, dass der übergeordnete Ordner "Sample" vorhanden ist und mit dem Löschen aller Dateien in diesem Ordner begonnen wurde. Danach löschte er alle Dateien im oberen Ordner - "R" - ebenfalls. Ich musste den Code abbrechen, bevor er mein Laufwerk (D :) löscht.
Es funktioniert gut zum Ersetzen vorhandener Ordner, aber nicht zum Erstellen neuer Ordner. Hat jemand irgendwelche Ideen, wie man die Funktion reparieren oder eine neue machen kann?
Dank
Ihre Funktion scheint nicht korrekt definiert zu sein. Warum rufst du 'make.dir' in der ersten' if' Anweisung? – ytk
@ytk Ich folgte der Antwort von diesem Thread (der letzte) http://stackoverflow.com/questions/4216753/check-existence-of-directory-and-create-if-doesnt-exist –
Ganz blind, ich vermuten. Jetzt, wo Sie darauf hingewiesen haben, könnte ich meine Funktion ohne den abnormalen Anruf erneut versuchen. –