【问题标题】:Dir.create function in R erases files in parent folders on the computerR中的Dir.create函数擦除计算机上父文件夹中的文件
【发布时间】: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 感谢您指出我的愚蠢错误。现在我已经删除了那条线,它似乎可以工作了。
  • 但是您知道它为什么会继续删除父母文件夹/文件吗?仅仅是故障吗?

标签: r function directory


【解决方案1】:

正如@ytk 在上面的评论中所指出的,在第一个if 语句中调用make.dir 会使函数变得疯狂。删除它解决了问题。谢谢,ytk

【讨论】:

    猜你喜欢
    • 2016-11-17
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多