【发布时间】:2016-07-29 13:46:32
【问题描述】:
出于工作目的,我创建了一个新函数,它自动测试文件夹(其名称由文件路径指定)是否存在:
make.dir <- function(fp) {
# If not existing, create a new one
if(!file.exists(fp)) {
make.dir(dirname(fp))
dir.create(fp, recursive = FALSE, showWarnings = FALSE)
} else {
# If existed, delete and replace with a new one
unlink(fp, recursive = FALSE)
dir.create(fp)
}
}
一个例子是:
make.dir("D:/Work/R/Sample")
如果该文件夹不存在,这应该在父文件夹“R”中创建一个名为“Sample”的文件夹,并用新文件夹替换该文件夹(如果存在)。
但是,我只在后一种情况下尝试过,即替换现有文件夹。昨天,我使用此代码尝试创建一个在“Sample”文件夹中不存在的文件夹(例如“Plots”)。它没有创建一个名为“Plots”的文件夹,而是检测到父文件夹 - “Sample”存在并开始删除该文件夹中包含的每个文件。之后,它继续删除上层文件夹“R”中的所有文件。在删除我的 (D:) 驱动器之前,我必须取消代码。
它适用于替换现有文件夹,但不适用于创建新文件夹。有人对如何修复该功能或制作新功能有任何想法吗?
谢谢
【问题讨论】:
-
您的函数似乎没有正确定义。为什么在第一个
if语句中调用make.dir? -
@ytk 我正在关注这个帖子(最后一个)stackoverflow.com/questions/4216753/…的答案@
-
相当盲目,我猜。既然您指出了这一点,我可能会再次尝试我的功能而不会出现异常调用
-
@ytk 感谢您指出我的愚蠢错误。现在我已经删除了那条线,它似乎可以工作了。
-
但是您知道它为什么会继续删除父母文件夹/文件吗?仅仅是故障吗?