在 R 中使用相对路径创建文件夹

Create folder using relative paths in R

我想创建一个相对于我当前目录的数据文件夹,即我想向上移动一个文件夹,然后向下移动另一个文件夹(和子文件夹)并创建一个文件夹。

dir.create 不起作用,因为它要么只创建指定文件夹的最后一部分,要么(当设置 recursive = TRUE 时)它将开始在工作目录的根目录中创建文件夹。

我正在为这个(据说)简单的任务而苦苦挣扎。有帮助吗?

这是我使用的代码和我遇到的错误:

dir.create("../04 Data/Data downloads/new folder")

Warning message:
In dir.create(download_folder) :
  cannot create dir '.. Data\Data downloads\new folder', reason 'No such file or directory'

所以让我们假设这是我当前的工作目录:

"C:/Users/USERNAME/Project/Subfolder/07 R" 现在我想创建以下文件夹:

"C:/Users/USERNAME/Project/Subfolder/04 Data/Data downloads/new folder"我该怎么做?

recursive = TRUE 用于处理至少一个父目录可能不存在的情况。

没有它,实际发生的事情是这样的:

p <- "../04 Data/Data downloads/new folder"
dirname(p)
# [1] "../04 Data/Data downloads"
if (!dir.exists(dirname(0))) stop("nope")

而对于 recursive = TRUE,它有效地做到了这一点:

p <- "../04 Data/Data downloads/new folder"
paths <- character(0)
while (nzchar(p) && p != ".") { paths <- c(p, paths); p <- dirname(p); }
paths
# [1] ".."                                  
# [2] "../04 Data"                          
# [3] "../04 Data/Data downloads"           
# [4] "../04 Data/Data downloads/new folder"

for (path in paths) if (!dir.exists(path)) dir.create(path)

这应该总是成功(除非父目录之一实际上是一个文件,或者如果您没有权限)。