无法使用 setwd() 将目录从绝对路径更改为相对路径

Unable to use setwd() to change directory from absolute to relative pathway

提问人:codingproblem 提问时间:10/31/2023 最后编辑:jay.sfcodingproblem 更新时间:10/31/2023 访问量:42

问:

当我尝试使用 setwd() 将我的工作目录从使用绝对路径(从 C:/examplename/Dropbox/Files)更改为相对路径 (~/Dropbox/Files) 时,我收到“无法更改工作目录”

我使用的代码在共享的Dropbox中工作,并且具有使用相对路径的语法,例如:

setwd(paste0("~/Dropbox/Files/", site))

但是,当我在计算机上运行此代码时,出现找不到文件路径的错误。我认为这是因为我的工作目录如下所示:

getwd()

但是,当我去更改它时,出现以下错误:

> setwd("~/Dropbox/Files")
Error in setwd("~/Dropbox/Files") : cannot change working directory

我已经检查了我是否使用了正确的拼写,并且我尝试了file.path

> setwd(file.path("~","Dropbox","Files"))
Error in setwd(file.path("~", "Dropbox", "Files")) : 
  cannot change working directory

我很好奇是否有人知道为什么我不能改变它?如果重要的话,编写代码的人使用的是 mac,而我有一台 PC。

r windows 相对路径 setwd

评论

0赞 MrFlick 10/31/2023
什么回报?我认为在 Windows 上,您的“主”目录实际上是您的桌面。也许会起作用path.expand("~")setwd("~/../Dropbox/Files")
0赞 codingproblem 10/31/2023
path.expand 调出“C:/Users/examplename/Documents”,所以这可能是我想要修复的问题?我可以将其更改为直接发送到 Dropbox 吗?
0赞 r2evans 10/31/2023
你说你的“工作目录看起来像”:但没有给出该命令的输出,也许你在复制/粘贴中遗漏了什么?返回三秒吗?你的操作系统是什么?getwd()dir.exists(c("~", "~/Dropbox", "~/Dropbox/Files"))TRUE
1赞 r2evans 10/31/2023
我认为您发现返回 ,并且似乎不存在的事实表明您需要更改路径或更新 .请参阅 cran.r-project.org/bin/windows/base/...(和/或 stackoverflow.com/a/53671435/3358272)。path.expand("~")".../Documents""~/Dropbox""~/../Dropbox/Files"HOME
0赞 codingproblem 10/31/2023
当我运行 dir.exists 时,我得到 TRUE FALSE FALSE。和 Windows 10。getwd() 显示为“C:/Users/examplename/Dropbox/Files

答:

0赞 Tripartio 10/31/2023 #1

就我而言,我在与Dropbox共享的文件共享的不同计算机上工作。它似乎与您的设置相似,只是您有不同的用户。这是我用于多个项目的脚本:

# Initialize environment and load data --------------

run_location <- "work"  # work | laptop | tablet
dropbox_path <- switch(
  run_location,
  "work" = "C:/Dropbox/",
  "laptop" = "S:/Dropbox/",
  "tablet" = "C:/Dropbox/"
)
defaultRFolder <- paste0(dropbox_path, "Travail/R/para")

wd <- paste0(dropbox_path, "Travail/Research/project_path")
setwd(wd)

我需要更改的只是开始时run_location的值,然后脚本会根据我的位置工作。以下是可能适合您的修改:

run_location <- "windows_user"  # mac_user | windows_user
dropbox_path <- switch(
  run_location,
  "mac_user" = "~/Dropbox/",
  "windows_user" = "C:/examplename/Dropbox/"
)

wd <- paste0(dropbox_path, "Files")
setwd(wd)

因此,在您的计算机上,您应该设置

run_location <- "windows_user"  # mac_user | windows_user

而你的同事应该设置

run_location <- "mac_user"  # mac_user | windows_user

在他们的。这是您唯一需要更改的内容,文件才能在各自的计算机上工作。