在 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)
这应该总是成功(除非父目录之一实际上是一个文件,或者如果您没有权限)。
我想创建一个相对于我当前目录的数据文件夹,即我想向上移动一个文件夹,然后向下移动另一个文件夹(和子文件夹)并创建一个文件夹。
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)
这应该总是成功(除非父目录之一实际上是一个文件,或者如果您没有权限)。