我正试图在R中直接向下移动一个文件夹。例如,我有一个foo / bar的工作目录,我想移动到foo / bar /子文件夹:
setwd("/Users/foo/bar")
getwd()
[1] "/Users/foo/bar"
setwd("~/subfolder")
然后我收到:
setwd中的错误("〜/子文件夹"):无法更改工作目录
我做错了什么?
答案 0 :(得分:20)
符号~
不符合你的想象。它并不意味着“当前目录”。 ~
指的是您的主目录。
用于当前目录的正确符号是句点.
所以,你想要的是
setwd("./subfolder")
当前操作系统通常假设如果未提供完整路径,则默认将使用相对路径(即,相对于当前目录)。因此,也可以简单地使用
setwd("subfolder")
路径中使用的符号摘要
.
=当前目录..
=当前目录的父级~
=主目录(请参阅主页目录下的解释性说明)/
作为第一个字符=根目录例如。 setwd("/folder")
/
。例如。 setwd("/folder/subfolder")
\
=在Windows和DOS操作系统仅中,反斜杠\
相当于/
。如果您在R中使用此格式,则需要使用双反斜杠\\
到'escape'这个。例如,setwd("C:\\folder\\subfolder")
。 但是,为了保持平台之间的兼容性,建议在Windows系统上坚持使用正斜杠/
,因为这将由R转换为正确的路径。关于“主页”目录的解释性说明
在Unix派生和类Unix操作系统(例如Linux,OsX,BSD)中,home
引用的~
目录的含义很简单。 ~
的含义由操作系统定义。根据操作系统的不同,通常为/home/<username>
(在Linux和BSD中),/Users/<username>
(在OS X中)或类似的平台相关变体。有关各种操作系统的定义列表,请参阅here。
但在Windows中,情况略有不同,因为操作系统无法将"~"
识别为有效路径。 R for Windows FAQ解释了expand.path
如何解释Windows计算机上的主目录,
主目录设置如下:如果环境变量为R_USER 设置,使用其值。否则,如果环境变量HOME是 设置,使用其值。在这两个用户可控制的设置之后,R 试图找到系统定义的主目录。它首先尝试使用 Windows“个人”目录(通常是 C:\ Users \用户名\文件)。如果失败,如果两个环境 设置变量HOMEDRIVE和HOMEPATH(它们通常是), 值是$ {HOMEDRIVE} $ {HOMEPATH}。如果所有这些都失败了,那就是当前的 使用工作目录。
根据我的经验,在Windows R上,最常将"~"
解释为"C:\Users\username\Documents"
。您可以使用以下命令找到环境变量的值
Sys.getenv("R_USER")
Sys.getenv("HOME")
Sys.getenv("HOMEDRIVE")
Sys.getenv("HOMEPATH")
并且,您可以使用命令
找出解释为"~"
的路径
normalizePath("~")