【问题标题】:R setwd() "Error while opening file - The system cannot find the file specified"R setwd() "打开文件时出错 - 系统找不到指定的文件"
【发布时间】:2021-09-19 19:58:15
【问题描述】:

我有一个应该使用 setwd() 更改工作目录的 R 脚本。

我的代码:

setwd(file.path(work_dir, database_dir, study))

我可以在应该执行此行之前暂停我的脚本(使用browser())将代码输入控制台没有问题,但是每当从脚本执行该行时,我都会收到错误框,指出存在“打开文件时出错:系统找不到指定的文件。”在调用 setwd 之前,在我的脚本中,我使用 file.exists(file.path(work_dir, database_dir,study)) 确认该路径存在。我还重新启动了 R studio 并关闭并重新打开了我的所有脚本,以确保这不会导致问题。

还有其他的建议让我试试吗?

【问题讨论】:

  • 也许我只是糊涂了,但你为什么要将你的工作目录更改为文件路径?
  • file.path() 函数以独立于平台的方式从组件构造文件的路径。我以前用过很多次都没有问题。
  • 如果该目录不存在或者它是一个文件,我会收到错误cannot change working directory,而不是cannot find,这表明可能 that 行不是错误的线。 (顺便说一句,我一直使用file.path 来创建目录路径,我认为函数名可以改为与文件/目录无关,例如make.pathcreate.path 或类似的......但没关系。你可以改为使用dir.exists而不是file.exists,它在逻辑上更符合您的意图,并且如果它确实是一个文件而应该是一个目录,则会出错。)
  • 我同意我收到“打开文件时出错”错误是非常奇怪的。我不确定还能尝试什么。我什至删除了 file.path 并手动输入了第一个子文件夹的路径,但无济于事。我真正不明白的是为什么该命令在控制台中没有问题,但在脚本中不起作用。

标签: r setwd


【解决方案1】:

发布我是如何解决问题的:

更改目录的脚本(我将调用此脚本 2)首先被另一个脚本调用(我将调用此脚本 1)。脚本 1 和脚本 2 位于同一目录中,但与我尝试更改的目录不同。脚本 1 使用 source("script2.R") 调用脚本 2。当我将其更改为 source(file.path(work_dir, "script2.R")) 我不再遇到 setwd() 命令的问题。我的猜测是,当我更改目录时,Rstudio“忘记”了它应该执行的脚本,这就是为什么我得到一个“不存在文件”错误。

如果有人有任何其他想法 - 请分享!

【讨论】:

    猜你喜欢
    • 2015-04-05
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 2017-12-07
    • 2016-09-19
    相关资源
    最近更新 更多