我经常发现自己在编写生成大量输出的R脚本。我发现把这个输出放到它自己的目录中更干净。我下面所写的内容将检查是否存在一个目录并移动到其中,或者创建一个目录然后移动到其中。有没有更好的解决办法?
mainDir <- "c:/path/to/main/dir"
subDir <- "outputDirectory"
if (file.exists(subDir)){
setwd(file.path(mainDir, subDir))
} else {
dir.create(file.path(mainDir, subDir))
setwd(file.path(mainDir, subDir))
}
使用showWarnings = FALSE:
dir.create(file.path(mainDir, subDir), showWarnings = FALSE)
setwd(file.path(mainDir, subDir))
如果目录已经存在,Dir.create()不会崩溃,它只是打印出一个警告。所以如果你能忍受看到警告,那么这样做是没有问题的:
dir.create(file.path(mainDir, subDir))
setwd(file.path(mainDir, subDir))
使用showWarnings = FALSE:
dir.create(file.path(mainDir, subDir), showWarnings = FALSE)
setwd(file.path(mainDir, subDir))
如果目录已经存在,Dir.create()不会崩溃,它只是打印出一个警告。所以如果你能忍受看到警告,那么这样做是没有问题的:
dir.create(file.path(mainDir, subDir))
setwd(file.path(mainDir, subDir))
2015年4月16日,随着R 3.2.0的发布,出现了一个名为dir.exists()的新函数。要使用此函数并在目录不存在时创建该目录,您可以使用:
ifelse(!dir.exists(file.path(mainDir, subDir)), dir.create(file.path(mainDir, subDir)), FALSE)
如果目录已经存在或不可创建,则返回FALSE;如果目录不存在但已成功创建,则返回TRUE。
注意,只需检查目录是否存在就可以使用
dir.exists(file.path(mainDir, subDir))