Après quelques recherches, j'ai découvert que les travaux suivants:
unlink("mydir")
et vous devez utiliser l'option recursive
au cas où vous voudriez supprimer récursivement:
unlink("mydir", recursive=TRUE)
Cependant, j'ai remarqué que unlink("mydir")
seul, sans l'option recursive
, ne produit aucun résultat lorsque mydir
contient des sous-répertoires: il ne supprime pas les répertoires mais ne montre aucun avertissement. Juste rien:
> list.dirs()
[1] "." "./r"
> dir.create("test")
> dir.create("test/test2")
> list.dirs()
[1] "." "./r" "./test" "./test/test2"
> unlink("test") ######### here I would expect a warning #########
> list.dirs()
[1] "." "./r" "./test" "./test/test2"
> unlink("test", recursive=TRUE)
> list.dirs()
[1] "." "./r"
Existe-t-il un moyen d’obtenir une sorte de "notification", comme celle que vous obtiendriez sous UNIX?
$ rmdir test
rmdir: failed to remove «test»: Directory not empty
J'utilise R version 3.1.2 (2014-10-31). J'ai essayé de jouer avec options(warn=1)
etc. mais pas de chance.
Voir l'aide ?unlink
:
Valeur
0 pour le succès, 1 pour l'échec, de manière invisible. Ne pas supprimer un inexistant Le fichier n’est pas un échec, ni l’impossibilité de supprimer un répertoire si récursif = FALSE. Cependant, les valeurs manquantes dans x sont considérées comme les échecs.
Dans le cas où il existe un dossier foo
, l'appel unlink
sans recursive=TRUE
renverra 1
.
Notez qu'en réalité, le comportement s'apparente davantage à rm -f
, ce qui signifie que la dissociation d'un fichier non existant retournera 0.
Voici une fonction de wrapper pour vous si vraiment devez voir un message d'erreur:
.unlink <- function(x, recursive = FALSE, force = FALSE) {
if (unlink(x, recursive, force) == 0)
return(invisible(TRUE))
stop(sprintf("Failed to remove [%s]", x))
}
Pour ceux qui tombent sur cela, je recourt normalement à l’utilisation de la commande système ici.
unlink supprime le contenu du dossier - mais conserve le dossier racine lui-même.
Voici l'option nucléaire simple - supprimer le dossier dans son intégralité (ce qui est souvent ce dont j'ai besoin) - écrite pour que vous puissiez voir facilement les composants:
Loc <- "mydir"
system(paste0("rm -r ", Loc))