提问人:codingproblem 提问时间:10/31/2023 最后编辑:jay.sfcodingproblem 更新时间:10/31/2023 访问量:42
无法使用 setwd() 将目录从绝对路径更改为相对路径
Unable to use setwd() to change directory from absolute to relative pathway
问:
当我尝试使用 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。
答:
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
在他们的。这是您唯一需要更改的内容,文件才能在各自的计算机上工作。
下一个:PHP 相对链接未按预期工作
评论
path.expand("~")
setwd("~/../Dropbox/Files")
getwd()
dir.exists(c("~", "~/Dropbox", "~/Dropbox/Files"))
TRUE
path.expand("~")
".../Documents"
"~/Dropbox"
"~/../Dropbox/Files"
HOME