这两行代码是等效的吗?

25 浏览
0 Comments

这两行代码是等效的吗?

我经常写一些生成大量输出的 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))
}

admin 更改状态以发布 2023年5月21日
0
0 Comments

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

0
0 Comments

使用 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))

0